From 2ecccbabb9b7e43be895a093f45884b88281052c Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Thu, 3 Oct 2024 10:00:42 -0400 Subject: [PATCH] TEST: Clear registry before and after every doctest --- sdcflows/conftest.py | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/sdcflows/conftest.py b/sdcflows/conftest.py index c0d03c1535..e8f2e709be 100644 --- a/sdcflows/conftest.py +++ b/sdcflows/conftest.py @@ -27,6 +27,7 @@ import nibabel import pytest from bids.layout import BIDSLayout +from .fieldmaps import clear_registry # disable ET os.environ['NO_ET'] = '1' @@ -59,18 +60,27 @@ def pytest_report_header(config): @pytest.fixture(autouse=True) -def add_np(doctest_namespace): - doctest_namespace["np"] = numpy - doctest_namespace["nb"] = nibabel - doctest_namespace["os"] = os - doctest_namespace["Path"] = Path - doctest_namespace["layouts"] = layouts - for key, val in list(layouts.items()): - doctest_namespace[key] = Path(val.root) - - doctest_namespace["dsA_dir"] = data_dir / "dsA" - doctest_namespace["dsB_dir"] = data_dir / "dsB" - doctest_namespace["dsC_dir"] = data_dir / "dsC" +def doctest_fixture(doctest_namespace, request): + doctest_plugin = request.config.pluginmanager.getplugin("doctest") + if isinstance(request.node, doctest_plugin.DoctestItem): + doctest_namespace.update( + np=numpy, + nb=nibabel, + os=os, + Path=Path, + layouts=layouts, + dsA_dir=data_dir / "dsA", + dsB_dir=data_dir / "dsB", + dsC_dir=data_dir / "dsC", + ) + doctest_namespace.update((key, Path(val.root)) for key, val in layouts.items()) + + # Start every doctest clean, and clean up after ourselves + clear_registry() + yield + clear_registry() + else: + yield @pytest.fixture