Resolve "CI: test_spectrometer_cartesian can fail"
Closes #3648 (closed)
BraggCalcController
instances were not closed upon closing the session.
Before this PR BraggCalcController
instances were closed upon garbage collection
CLOSE <bliss.controllers.spectrometers.spectro_base.BraggCalcController object at 0x7f2bb364b760>
File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 1150, in __del__
self.__close__()
File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 1160, in __close__
self.detector.__close__()
File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 420, in __close__
super().__close__()
File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 293, in __close__
self._bragg_calc_controller.close()
File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 150, in close
traceback.print_stack()
After this PR BraggCalcController
instances are closed explicitly when closing the session
CLOSE <bliss.controllers.spectrometers.spectro_base.BraggCalcController object at 0x7fa5b775b5b0>
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pytest/__main__.py", line 5, in <module>
raise SystemExit(pytest.console_main())
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/config/__init__.py", line 189, in console_main
code = main()
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/config/__init__.py", line 166, in main
ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main(
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_hooks.py", line 265, in __call__
return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_manager.py", line 80, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_callers.py", line 39, in _multicall
res = hook_impl.function(*args)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/main.py", line 316, in pytest_cmdline_main
return wrap_session(config, _main)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/main.py", line 269, in wrap_session
session.exitstatus = doit(config, session) or 0
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/main.py", line 323, in _main
config.hook.pytest_runtestloop(session=session)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_hooks.py", line 265, in __call__
return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_manager.py", line 80, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_callers.py", line 39, in _multicall
res = hook_impl.function(*args)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/main.py", line 348, in pytest_runtestloop
item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_hooks.py", line 265, in __call__
return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_manager.py", line 80, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_callers.py", line 39, in _multicall
res = hook_impl.function(*args)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 114, in pytest_runtest_protocol
runtestprotocol(item, nextitem=nextitem)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 134, in runtestprotocol
reports.append(call_and_report(item, "teardown", log, nextitem=nextitem))
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 222, in call_and_report
call = call_runtest_hook(item, when, **kwds)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 261, in call_runtest_hook
return CallInfo.from_call(
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 341, in from_call
result: Optional[TResult] = func()
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 262, in <lambda>
lambda: ihook(item=item, **kwds), when=when, reraise=reraise
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_hooks.py", line 265, in __call__
return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_manager.py", line 80, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_callers.py", line 39, in _multicall
res = hook_impl.function(*args)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 182, in pytest_runtest_teardown
item.session._setupstate.teardown_exact(nextitem)
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 526, in teardown_exact
fin()
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/fixtures.py", line 686, in <lambda>
subrequest.node.addfinalizer(lambda: fixturedef.finish(request=subrequest))
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/fixtures.py", line 1031, in finish
func()
File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/fixtures.py", line 918, in _teardown_yield_fixture
next(it)
File "/home/denolf/projects/bliss/tests/conftest.py", line 627, in default_session
default_session.close()
File "/home/denolf/projects/bliss/bliss/common/session.py", line 1016, in close
obj.__close__()
File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 1143, in __close__
self.close()
File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 1150, in close
ana.close()
File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 413, in close
super().close()
File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 286, in close
self._bragg_calc_controller.close()
File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 150, in close
traceback.print_stack()
Edited by Wout De Nolf