From 775e41c81f254d513068241d0715039912d67f87 Mon Sep 17 00:00:00 2001 From: James Nightingale Date: Sun, 25 Oct 2026 08:07:23 -0700 Subject: [PATCH] test: isolate EP output directories for parallel runs --- test_autofit/graphical/conftest.py | 27 +++++++++++++++++++ .../graphical/gaussian/test_optimizer.py | 3 --- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/test_autofit/graphical/conftest.py b/test_autofit/graphical/conftest.py index 16f361ec5..59fa656a9 100644 --- a/test_autofit/graphical/conftest.py +++ b/test_autofit/graphical/conftest.py @@ -3,6 +3,33 @@ import autofit.mapper.variable from autofit import graphical as graph +from autonerves import conf + + +@pytest.fixture +def output_directory(tmp_path): + """Each test owns its output, even when model identifiers coincide.""" + return tmp_path / "output" + + +@pytest.fixture(autouse=True) +def set_config_path(test_directory, output_directory): + previous_configs = conf.instance.configs + previous_output = conf.instance.output_path + conf.instance.push( + new_path=str(test_directory / "config"), + output_path=str(output_directory), + ) + yield + conf.instance.configs = previous_configs + conf.instance.output_path = previous_output + + +@pytest.fixture(autouse=True) +def do_remove_output(): + # tmp_path owns cleanup. The parent fixture removes the shared output tree, + # which may belong to another worker running a non-graphical test. + yield @pytest.fixture(autouse=True) diff --git a/test_autofit/graphical/gaussian/test_optimizer.py b/test_autofit/graphical/gaussian/test_optimizer.py index bc129e27a..433993be5 100644 --- a/test_autofit/graphical/gaussian/test_optimizer.py +++ b/test_autofit/graphical/gaussian/test_optimizer.py @@ -2,7 +2,6 @@ import autofit as af import autofit.graphical as g -from autonerves.conf import output_path_for_test from autofit.graphical.utils import Status from test_autofit.graphical.gaussian.model import Analysis @@ -50,7 +49,6 @@ def _test_set_model_identifier(dynesty, prior_model, analysis): class TestDynesty: @pytest.mark.filterwarnings("ignore::RuntimeWarning") - @output_path_for_test() def test_optimisation(self, factor_model, laplace, dynesty): factor_model.optimiser = dynesty factor_model.optimise(laplace) @@ -66,7 +64,6 @@ def test_null_paths(self, factor_model): assert isinstance(status, Status) @pytest.mark.filterwarnings("ignore::RuntimeWarning") - @output_path_for_test() def test_optimise(self, factor_model, dynesty): result, status = dynesty.optimise( factor_model.mean_field_approximation().factor_approximation(factor_model)