Ensure that brain can be properly garbage collected.
(request)
| 978 | |
| 979 | @pytest.fixture() |
| 980 | def brain_gc(request): |
| 981 | """Ensure that brain can be properly garbage collected.""" |
| 982 | keys = ( |
| 983 | "renderer_interactive", |
| 984 | "renderer_interactive_pyvistaqt", |
| 985 | "renderer", |
| 986 | "renderer_pyvistaqt", |
| 987 | "renderer_notebook", |
| 988 | ) |
| 989 | assert set(request.fixturenames) & set(keys) != set() |
| 990 | for key in keys: |
| 991 | if key in request.fixturenames: |
| 992 | is_pv = request.getfixturevalue(key)._get_3d_backend() == "pyvistaqt" |
| 993 | close_func = request.getfixturevalue(key).backend._close_all |
| 994 | break |
| 995 | if not is_pv: |
| 996 | yield |
| 997 | return |
| 998 | from mne.viz import Brain |
| 999 | |
| 1000 | ignore = set(id(o) for o in gc.get_objects()) |
| 1001 | yield |
| 1002 | close_func() |
| 1003 | if not _test_passed(request): |
| 1004 | return |
| 1005 | _assert_no_instances(Brain, "after") |
| 1006 | # Check VTK |
| 1007 | objs = gc.get_objects() |
| 1008 | bad = list() |
| 1009 | for o in objs: |
| 1010 | try: |
| 1011 | name = o.__class__.__name__ |
| 1012 | except Exception: # old Python, probably |
| 1013 | pass |
| 1014 | else: |
| 1015 | if name.startswith("vtk") and id(o) not in ignore: |
| 1016 | bad.append(name) |
| 1017 | del o |
| 1018 | del objs, ignore, Brain |
| 1019 | assert len(bad) == 0, "VTK objects linger:\n" + "\n".join(bad) |
| 1020 | |
| 1021 | |
| 1022 | _files = list() |
nothing calls this directly
no test coverage detected