From 8a2a7d7cabc39e4f220b229ed9504ed9c5abf089 Mon Sep 17 00:00:00 2001
From: Andre Anjos <andre.dos.anjos@gmail.com>
Date: Tue, 28 Feb 2023 08:49:10 -0300
Subject: [PATCH] [tests] Simplifies test database unpacking by moving code to
 a pytest initializer; Make tests more unaware of the test database

---
 src/ptbench/data/montgomery/__init__.py |   1 -
 tests/conftest.py                       |  80 +++++------
 tests/test_ch_RS.py                     |   6 +-
 tests/test_cli.py                       |  15 ++
 tests/test_config.py                    |   5 +
 tests/test_data_utils.py                |   4 +-
 tests/test_hivtb_RS.py                  |   6 +-
 tests/test_in.py                        |   8 +-
 tests/test_mc.py                        |   8 +-
 tests/test_mc_RS.py                     |   7 +-
 tests/test_mc_ch.py                     | 134 +++++++++---------
 tests/test_mc_ch_RS.py                  |  68 ++++-----
 tests/test_mc_ch_in.py                  | 177 ++++++++++++------------
 tests/test_mc_ch_in_RS.py               |  90 ++++++------
 tests/test_mc_ch_in_pc.py               |  18 +--
 tests/test_mc_ch_in_pc_RS.py            |  12 +-
 tests/test_nih_cxr14.py                 |   6 +-
 tests/test_nih_cxr14_pc.py              |  12 +-
 tests/test_pc.py                        |   6 +-
 tests/test_pc_RS.py                     |   6 +-
 20 files changed, 341 insertions(+), 328 deletions(-)

diff --git a/src/ptbench/data/montgomery/__init__.py b/src/ptbench/data/montgomery/__init__.py
index 719941f9..38b50a26 100644
--- a/src/ptbench/data/montgomery/__init__.py
+++ b/src/ptbench/data/montgomery/__init__.py
@@ -2,7 +2,6 @@
 #
 # SPDX-License-Identifier: GPL-3.0-or-later
 
-
 """Montgomery dataset for computer-aided diagnosis.
 
 The Montgomery database has been established to foster research
diff --git a/tests/conftest.py b/tests/conftest.py
index 86a852b5..837a34f4 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -4,7 +4,8 @@
 
 import os
 import pathlib
-import typing
+import tempfile
+import zipfile
 
 import pytest
 import tomli_w
@@ -70,16 +71,10 @@ def temporary_basedir(tmp_path_factory):
     return tmp_path_factory.mktemp("test-cli")
 
 
-@pytest.fixture(scope="session", autouse=True)
-def ensure_montgomery(
-    tmp_path_factory,
-) -> typing.Generator[None, None, None]:
-    """A pytest fixture that ensures that datadir.montgomery is always
+def pytest_sessionstart(session: pytest.Session) -> None:
+    """Presets the session start to ensure the Montgomery dataset is always
     available."""
 
-    import tempfile
-    import zipfile
-
     from ptbench.utils.rc import load_rc
 
     rc = load_rc()
@@ -87,39 +82,34 @@ def ensure_montgomery(
     database_dir = rc.get("datadir.montgomery")
     if database_dir is not None:
         # if the user downloaded it, use that copy
-        yield
-
-    else:
-        # else, we must extract the LFS component (we are likely on the CI)
-        archive = (
-            pathlib.Path(__file__).parents[0]
-            / "data"
-            / "lfs"
-            / "test-database.zip"
-        )
-        assert archive.exists(), (
-            f"Neither datadir.montgomery is set on the global configuration, "
-            f"(typically ~/.config/ptbench.toml), or it is possible to detect "
-            f"the presence of {archive}' (did you git submodule init --update "
-            f"this submodule?)"
-        )
-
-        database_dir = tmp_path_factory.mktemp("montgomery_datadir")
-        rc.setdefault("datadir.montgomery", str(database_dir))
-
-        with zipfile.ZipFile(archive) as zf:
-            zf.extractall(database_dir)
-
-        with tempfile.TemporaryDirectory() as tmpdir:
-            config_filename = "ptbench.toml"
-            with open(os.path.join(tmpdir, config_filename), "wb") as f:
-                tomli_w.dump(rc.data, f)
-                f.flush()
-
-            old_config_home = os.environ.get("XDG_CONFIG_HOME")
-            os.environ["XDG_CONFIG_HOME"] = tmpdir
-            yield
-            if old_config_home is None:
-                del os.environ["XDG_CONFIG_HOME"]
-            else:
-                os.environ["XDG_CONFIG_HOME"] = old_config_home
+        return
+
+    # else, we must extract the LFS component (we are likely on the CI)
+    archive = (
+        pathlib.Path(__file__).parents[0] / "data" / "lfs" / "test-database.zip"
+    )
+    assert archive.exists(), (
+        f"Neither datadir.montgomery is set on the global configuration, "
+        f"(typically ~/.config/ptbench.toml), or it is possible to detect "
+        f"the presence of {archive}' (did you git submodule init --update "
+        f"this submodule?)"
+    )
+
+    montgomery_tempdir = tempfile.TemporaryDirectory()
+    rc.setdefault("datadir.montgomery", montgomery_tempdir.name)
+
+    with zipfile.ZipFile(archive) as zf:
+        zf.extractall(montgomery_tempdir.name)
+
+    config_filename = "ptbench.toml"
+    with open(
+        os.path.join(montgomery_tempdir.name, config_filename), "wb"
+    ) as f:
+        tomli_w.dump(rc.data, f)
+        f.flush()
+
+    os.environ["XDG_CONFIG_HOME"] = montgomery_tempdir.name
+
+    # stash the newly created temporary directory so we can erase it when the
+    key = pytest.StashKey[tempfile.TemporaryDirectory]()
+    session.stash[key] = montgomery_tempdir
diff --git a/tests/test_ch_RS.py b/tests/test_ch_RS.py
index 8e2fcd20..47a3aa8e 100644
--- a/tests/test_ch_RS.py
+++ b/tests/test_ch_RS.py
@@ -4,10 +4,10 @@
 
 """Tests for Extended Shenzhen dataset."""
 
-from ptbench.data.shenzhen_RS import dataset
-
 
 def test_protocol_consistency():
+    from ptbench.data.shenzhen_RS import dataset
+
     # Default protocol
     subset = dataset.subsets("default")
     assert len(subset) == 3
@@ -95,6 +95,8 @@ def test_protocol_consistency():
 
 
 def test_loading():
+    from ptbench.data.shenzhen_RS import dataset
+
     def _check_sample(s):
         data = s.data
 
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 3ed16d08..9c42d58e 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -8,6 +8,8 @@ import contextlib
 import os
 import re
 
+import pytest
+
 from click.testing import CliRunner
 
 
@@ -78,6 +80,7 @@ def test_config_describe_help():
     _check_help(describe)
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_config_describe_montgomery():
     from ptbench.scripts.config import describe
 
@@ -114,6 +117,7 @@ def test_dataset_check_help():
     _check_help(check)
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_dataset_check():
     from ptbench.scripts.dataset import check
 
@@ -168,6 +172,7 @@ def test_compare_help():
     _check_help(compare)
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_train_pasa_montgomery(temporary_basedir):
     from ptbench.scripts.train import train
 
@@ -221,6 +226,7 @@ def test_train_pasa_montgomery(temporary_basedir):
             )
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_predict_pasa_montgomery(temporary_basedir, datadir):
     from ptbench.scripts.predict import predict
 
@@ -268,6 +274,7 @@ def test_predict_pasa_montgomery(temporary_basedir, datadir):
             )
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_predtojson(datadir, temporary_basedir):
     from ptbench.scripts.predtojson import predtojson
 
@@ -308,6 +315,7 @@ def test_predtojson(datadir, temporary_basedir):
             )
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_evaluate_pasa_montgomery(temporary_basedir):
     from ptbench.scripts.evaluate import evaluate
 
@@ -357,6 +365,7 @@ def test_evaluate_pasa_montgomery(temporary_basedir):
             )
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_compare_pasa_montgomery(temporary_basedir):
     from ptbench.scripts.compare import compare
 
@@ -400,6 +409,7 @@ def test_compare_pasa_montgomery(temporary_basedir):
             )
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_train_signstotb_montgomery_rs(temporary_basedir, datadir):
     from ptbench.scripts.train import train
 
@@ -452,6 +462,7 @@ def test_train_signstotb_montgomery_rs(temporary_basedir, datadir):
             )
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_predict_signstotb_montgomery_rs(temporary_basedir, datadir):
     from ptbench.scripts.predict import predict
 
@@ -500,6 +511,7 @@ def test_predict_signstotb_montgomery_rs(temporary_basedir, datadir):
             )
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_train_logreg_montgomery_rs(temporary_basedir, datadir):
     from ptbench.scripts.train import train
 
@@ -552,6 +564,7 @@ def test_train_logreg_montgomery_rs(temporary_basedir, datadir):
             )
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_predict_logreg_montgomery_rs(temporary_basedir, datadir):
     from ptbench.scripts.predict import predict
 
@@ -594,6 +607,7 @@ def test_predict_logreg_montgomery_rs(temporary_basedir, datadir):
             )
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_aggregpred(temporary_basedir):
     from ptbench.scripts.aggregpred import aggregpred
 
@@ -635,6 +649,7 @@ def test_aggregpred(temporary_basedir):
 
 
 # Not enough RAM available to do this test
+# @pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 # def test_predict_densenetrs_montgomery(temporary_basedir, datadir):
 
 #    from ptbench.scripts.predict import predict
diff --git a/tests/test_config.py b/tests/test_config.py
index 91f52a5a..df5c7ab5 100644
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -16,6 +16,7 @@ from ptbench.configs.datasets import get_positive_weights, get_samples_weights
 N = 10
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_montgomery():
     def _check_subset(samples, size):
         assert len(samples) == size
@@ -38,6 +39,7 @@ def test_montgomery():
     _check_subset(dataset["test"], 28)
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_get_samples_weights():
     from ptbench.configs.datasets.montgomery.default import dataset
 
@@ -60,6 +62,7 @@ def test_get_samples_weights_multi():
     )
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_get_samples_weights_concat():
     from ptbench.configs.datasets.montgomery.default import dataset
 
@@ -95,6 +98,7 @@ def test_get_samples_weights_multi_concat():
     np.testing.assert_equal(train_samples_weights, ref_samples_weights)
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_get_positive_weights():
     from ptbench.configs.datasets.montgomery.default import dataset
 
@@ -167,6 +171,7 @@ def test_get_positive_weights_multi():
     )
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_get_positive_weights_concat():
     from ptbench.configs.datasets.montgomery.default import dataset
 
diff --git a/tests/test_data_utils.py b/tests/test_data_utils.py
index d21d050a..cc2c0924 100644
--- a/tests/test_data_utils.py
+++ b/tests/test_data_utils.py
@@ -7,11 +7,11 @@
 import numpy
 import pytest
 
-from ptbench.configs.datasets.montgomery_RS import fold_0 as mc
-
 
 @pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_random_permute():
+    from ptbench.configs.datasets.montgomery_RS import fold_0 as mc
+
     test_set = mc.dataset["test"]
 
     original = numpy.zeros(len(test_set))
diff --git a/tests/test_hivtb_RS.py b/tests/test_hivtb_RS.py
index f33bea44..5e66563b 100644
--- a/tests/test_hivtb_RS.py
+++ b/tests/test_hivtb_RS.py
@@ -4,10 +4,10 @@
 
 """Tests for HIV-TB_RS dataset."""
 
-from ptbench.data.hivtb_RS import dataset
-
 
 def test_protocol_consistency():
+    from ptbench.data.hivtb_RS import dataset
+
     # Cross-validation fold 0-2
     for f in range(3):
         subset = dataset.subsets("fold_" + str(f))
@@ -70,6 +70,8 @@ def test_protocol_consistency():
 
 
 def test_loading():
+    from ptbench.data.hivtb_RS import dataset
+
     def _check_sample(s):
         data = s.data
 
diff --git a/tests/test_in.py b/tests/test_in.py
index a14eacae..8cdc0dd0 100644
--- a/tests/test_in.py
+++ b/tests/test_in.py
@@ -6,10 +6,10 @@
 
 import pytest
 
-from ptbench.data.indian import dataset
-
 
 def test_protocol_consistency():
+    from ptbench.data.indian import dataset
+
     # Default protocol
     subset = dataset.subsets("default")
     assert len(subset) == 3
@@ -102,6 +102,8 @@ def test_protocol_consistency():
 
 @pytest.mark.skip_if_rc_var_not_set("datadir.indian")
 def test_loading():
+    from ptbench.data.indian import dataset
+
     def _check_size(size):
         if (
             size[0] >= 1024
@@ -133,4 +135,6 @@ def test_loading():
 
 @pytest.mark.skip_if_rc_var_not_set("datadir.indian")
 def test_check():
+    from ptbench.data.indian import dataset
+
     assert dataset.check() == 0
diff --git a/tests/test_mc.py b/tests/test_mc.py
index 510e5a7f..38b7b8fb 100644
--- a/tests/test_mc.py
+++ b/tests/test_mc.py
@@ -6,10 +6,10 @@
 
 import pytest
 
-from ptbench.data.montgomery import dataset
-
 
 def test_protocol_consistency():
+    from ptbench.data.montgomery import dataset
+
     # Default protocol
     subset = dataset.subsets("default")
     assert len(subset) == 3
@@ -102,6 +102,8 @@ def test_protocol_consistency():
 
 @pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_loading():
+    from ptbench.data.montgomery import dataset
+
     image_size_portrait = (4020, 4892)
     image_size_landscape = (4892, 4020)
 
@@ -133,4 +135,6 @@ def test_loading():
 
 @pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_check():
+    from ptbench.data.montgomery import dataset
+
     assert dataset.check() == 0
diff --git a/tests/test_mc_RS.py b/tests/test_mc_RS.py
index 82ec991b..513fff8c 100644
--- a/tests/test_mc_RS.py
+++ b/tests/test_mc_RS.py
@@ -4,10 +4,12 @@
 
 """Tests for Extended Montgomery dataset."""
 
-from ptbench.data.montgomery_RS import dataset
+import pytest
 
 
 def test_protocol_consistency():
+    from ptbench.data.montgomery_RS import dataset
+
     # Default protocol
     subset = dataset.subsets("default")
     assert len(subset) == 3
@@ -94,7 +96,10 @@ def test_protocol_consistency():
             assert s.label in [0.0, 1.0]
 
 
+@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
 def test_loading():
+    from ptbench.data.montgomery_RS import dataset
+
     def _check_sample(s):
         data = s.data
 
diff --git a/tests/test_mc_ch.py b/tests/test_mc_ch.py
index 35f0fc51..43456eaa 100644
--- a/tests/test_mc_ch.py
+++ b/tests/test_mc_ch.py
@@ -4,76 +4,72 @@
 
 """Tests for the aggregated Montgomery-Shenzhen dataset."""
 
-import pytest
-
-from ptbench.configs.datasets.mc_ch import default as mc_ch
-from ptbench.configs.datasets.mc_ch import fold_0 as mc_ch_f0
-from ptbench.configs.datasets.mc_ch import fold_0_rgb as mc_ch_f0_rgb
-from ptbench.configs.datasets.mc_ch import fold_1 as mc_ch_f1
-from ptbench.configs.datasets.mc_ch import fold_1_rgb as mc_ch_f1_rgb
-from ptbench.configs.datasets.mc_ch import fold_2 as mc_ch_f2
-from ptbench.configs.datasets.mc_ch import fold_2_rgb as mc_ch_f2_rgb
-from ptbench.configs.datasets.mc_ch import fold_3 as mc_ch_f3
-from ptbench.configs.datasets.mc_ch import fold_3_rgb as mc_ch_f3_rgb
-from ptbench.configs.datasets.mc_ch import fold_4 as mc_ch_f4
-from ptbench.configs.datasets.mc_ch import fold_4_rgb as mc_ch_f4_rgb
-from ptbench.configs.datasets.mc_ch import fold_5 as mc_ch_f5
-from ptbench.configs.datasets.mc_ch import fold_5_rgb as mc_ch_f5_rgb
-from ptbench.configs.datasets.mc_ch import fold_6 as mc_ch_f6
-from ptbench.configs.datasets.mc_ch import fold_6_rgb as mc_ch_f6_rgb
-from ptbench.configs.datasets.mc_ch import fold_7 as mc_ch_f7
-from ptbench.configs.datasets.mc_ch import fold_7_rgb as mc_ch_f7_rgb
-from ptbench.configs.datasets.mc_ch import fold_8 as mc_ch_f8
-from ptbench.configs.datasets.mc_ch import fold_8_rgb as mc_ch_f8_rgb
-from ptbench.configs.datasets.mc_ch import fold_9 as mc_ch_f9
-from ptbench.configs.datasets.mc_ch import fold_9_rgb as mc_ch_f9_rgb
-from ptbench.configs.datasets.montgomery import default as mc
-from ptbench.configs.datasets.montgomery import fold_0 as mc_f0
-from ptbench.configs.datasets.montgomery import fold_0_rgb as mc_f0_rgb
-from ptbench.configs.datasets.montgomery import fold_1 as mc_f1
-from ptbench.configs.datasets.montgomery import fold_1_rgb as mc_f1_rgb
-from ptbench.configs.datasets.montgomery import fold_2 as mc_f2
-from ptbench.configs.datasets.montgomery import fold_2_rgb as mc_f2_rgb
-from ptbench.configs.datasets.montgomery import fold_3 as mc_f3
-from ptbench.configs.datasets.montgomery import fold_3_rgb as mc_f3_rgb
-from ptbench.configs.datasets.montgomery import fold_4 as mc_f4
-from ptbench.configs.datasets.montgomery import fold_4_rgb as mc_f4_rgb
-from ptbench.configs.datasets.montgomery import fold_5 as mc_f5
-from ptbench.configs.datasets.montgomery import fold_5_rgb as mc_f5_rgb
-from ptbench.configs.datasets.montgomery import fold_6 as mc_f6
-from ptbench.configs.datasets.montgomery import fold_6_rgb as mc_f6_rgb
-from ptbench.configs.datasets.montgomery import fold_7 as mc_f7
-from ptbench.configs.datasets.montgomery import fold_7_rgb as mc_f7_rgb
-from ptbench.configs.datasets.montgomery import fold_8 as mc_f8
-from ptbench.configs.datasets.montgomery import fold_8_rgb as mc_f8_rgb
-from ptbench.configs.datasets.montgomery import fold_9 as mc_f9
-from ptbench.configs.datasets.montgomery import fold_9_rgb as mc_f9_rgb
-from ptbench.configs.datasets.shenzhen import default as ch
-from ptbench.configs.datasets.shenzhen import fold_0 as ch_f0
-from ptbench.configs.datasets.shenzhen import fold_0_rgb as ch_f0_rgb
-from ptbench.configs.datasets.shenzhen import fold_1 as ch_f1
-from ptbench.configs.datasets.shenzhen import fold_1_rgb as ch_f1_rgb
-from ptbench.configs.datasets.shenzhen import fold_2 as ch_f2
-from ptbench.configs.datasets.shenzhen import fold_2_rgb as ch_f2_rgb
-from ptbench.configs.datasets.shenzhen import fold_3 as ch_f3
-from ptbench.configs.datasets.shenzhen import fold_3_rgb as ch_f3_rgb
-from ptbench.configs.datasets.shenzhen import fold_4 as ch_f4
-from ptbench.configs.datasets.shenzhen import fold_4_rgb as ch_f4_rgb
-from ptbench.configs.datasets.shenzhen import fold_5 as ch_f5
-from ptbench.configs.datasets.shenzhen import fold_5_rgb as ch_f5_rgb
-from ptbench.configs.datasets.shenzhen import fold_6 as ch_f6
-from ptbench.configs.datasets.shenzhen import fold_6_rgb as ch_f6_rgb
-from ptbench.configs.datasets.shenzhen import fold_7 as ch_f7
-from ptbench.configs.datasets.shenzhen import fold_7_rgb as ch_f7_rgb
-from ptbench.configs.datasets.shenzhen import fold_8 as ch_f8
-from ptbench.configs.datasets.shenzhen import fold_8_rgb as ch_f8_rgb
-from ptbench.configs.datasets.shenzhen import fold_9 as ch_f9
-from ptbench.configs.datasets.shenzhen import fold_9_rgb as ch_f9_rgb
-
-
-@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
-@pytest.mark.skip_if_rc_var_not_set("datadir.shenzhen")
+
 def test_dataset_consistency():
+    from ptbench.configs.datasets.mc_ch import default as mc_ch
+    from ptbench.configs.datasets.mc_ch import fold_0 as mc_ch_f0
+    from ptbench.configs.datasets.mc_ch import fold_0_rgb as mc_ch_f0_rgb
+    from ptbench.configs.datasets.mc_ch import fold_1 as mc_ch_f1
+    from ptbench.configs.datasets.mc_ch import fold_1_rgb as mc_ch_f1_rgb
+    from ptbench.configs.datasets.mc_ch import fold_2 as mc_ch_f2
+    from ptbench.configs.datasets.mc_ch import fold_2_rgb as mc_ch_f2_rgb
+    from ptbench.configs.datasets.mc_ch import fold_3 as mc_ch_f3
+    from ptbench.configs.datasets.mc_ch import fold_3_rgb as mc_ch_f3_rgb
+    from ptbench.configs.datasets.mc_ch import fold_4 as mc_ch_f4
+    from ptbench.configs.datasets.mc_ch import fold_4_rgb as mc_ch_f4_rgb
+    from ptbench.configs.datasets.mc_ch import fold_5 as mc_ch_f5
+    from ptbench.configs.datasets.mc_ch import fold_5_rgb as mc_ch_f5_rgb
+    from ptbench.configs.datasets.mc_ch import fold_6 as mc_ch_f6
+    from ptbench.configs.datasets.mc_ch import fold_6_rgb as mc_ch_f6_rgb
+    from ptbench.configs.datasets.mc_ch import fold_7 as mc_ch_f7
+    from ptbench.configs.datasets.mc_ch import fold_7_rgb as mc_ch_f7_rgb
+    from ptbench.configs.datasets.mc_ch import fold_8 as mc_ch_f8
+    from ptbench.configs.datasets.mc_ch import fold_8_rgb as mc_ch_f8_rgb
+    from ptbench.configs.datasets.mc_ch import fold_9 as mc_ch_f9
+    from ptbench.configs.datasets.mc_ch import fold_9_rgb as mc_ch_f9_rgb
+    from ptbench.configs.datasets.montgomery import default as mc
+    from ptbench.configs.datasets.montgomery import fold_0 as mc_f0
+    from ptbench.configs.datasets.montgomery import fold_0_rgb as mc_f0_rgb
+    from ptbench.configs.datasets.montgomery import fold_1 as mc_f1
+    from ptbench.configs.datasets.montgomery import fold_1_rgb as mc_f1_rgb
+    from ptbench.configs.datasets.montgomery import fold_2 as mc_f2
+    from ptbench.configs.datasets.montgomery import fold_2_rgb as mc_f2_rgb
+    from ptbench.configs.datasets.montgomery import fold_3 as mc_f3
+    from ptbench.configs.datasets.montgomery import fold_3_rgb as mc_f3_rgb
+    from ptbench.configs.datasets.montgomery import fold_4 as mc_f4
+    from ptbench.configs.datasets.montgomery import fold_4_rgb as mc_f4_rgb
+    from ptbench.configs.datasets.montgomery import fold_5 as mc_f5
+    from ptbench.configs.datasets.montgomery import fold_5_rgb as mc_f5_rgb
+    from ptbench.configs.datasets.montgomery import fold_6 as mc_f6
+    from ptbench.configs.datasets.montgomery import fold_6_rgb as mc_f6_rgb
+    from ptbench.configs.datasets.montgomery import fold_7 as mc_f7
+    from ptbench.configs.datasets.montgomery import fold_7_rgb as mc_f7_rgb
+    from ptbench.configs.datasets.montgomery import fold_8 as mc_f8
+    from ptbench.configs.datasets.montgomery import fold_8_rgb as mc_f8_rgb
+    from ptbench.configs.datasets.montgomery import fold_9 as mc_f9
+    from ptbench.configs.datasets.montgomery import fold_9_rgb as mc_f9_rgb
+    from ptbench.configs.datasets.shenzhen import default as ch
+    from ptbench.configs.datasets.shenzhen import fold_0 as ch_f0
+    from ptbench.configs.datasets.shenzhen import fold_0_rgb as ch_f0_rgb
+    from ptbench.configs.datasets.shenzhen import fold_1 as ch_f1
+    from ptbench.configs.datasets.shenzhen import fold_1_rgb as ch_f1_rgb
+    from ptbench.configs.datasets.shenzhen import fold_2 as ch_f2
+    from ptbench.configs.datasets.shenzhen import fold_2_rgb as ch_f2_rgb
+    from ptbench.configs.datasets.shenzhen import fold_3 as ch_f3
+    from ptbench.configs.datasets.shenzhen import fold_3_rgb as ch_f3_rgb
+    from ptbench.configs.datasets.shenzhen import fold_4 as ch_f4
+    from ptbench.configs.datasets.shenzhen import fold_4_rgb as ch_f4_rgb
+    from ptbench.configs.datasets.shenzhen import fold_5 as ch_f5
+    from ptbench.configs.datasets.shenzhen import fold_5_rgb as ch_f5_rgb
+    from ptbench.configs.datasets.shenzhen import fold_6 as ch_f6
+    from ptbench.configs.datasets.shenzhen import fold_6_rgb as ch_f6_rgb
+    from ptbench.configs.datasets.shenzhen import fold_7 as ch_f7
+    from ptbench.configs.datasets.shenzhen import fold_7_rgb as ch_f7_rgb
+    from ptbench.configs.datasets.shenzhen import fold_8 as ch_f8
+    from ptbench.configs.datasets.shenzhen import fold_8_rgb as ch_f8_rgb
+    from ptbench.configs.datasets.shenzhen import fold_9 as ch_f9
+    from ptbench.configs.datasets.shenzhen import fold_9_rgb as ch_f9_rgb
+
     # Default protocol
     mc_ch_dataset = mc_ch.dataset
     assert isinstance(mc_ch_dataset, dict)
diff --git a/tests/test_mc_ch_RS.py b/tests/test_mc_ch_RS.py
index 5d81fbee..65e96d7f 100644
--- a/tests/test_mc_ch_RS.py
+++ b/tests/test_mc_ch_RS.py
@@ -4,42 +4,42 @@
 
 """Tests for the aggregated Montgomery-Shenzhen dataset."""
 
-from ptbench.configs.datasets.mc_ch_RS import default as mc_ch_RS
-from ptbench.configs.datasets.mc_ch_RS import fold_0 as mc_ch_f0
-from ptbench.configs.datasets.mc_ch_RS import fold_1 as mc_ch_f1
-from ptbench.configs.datasets.mc_ch_RS import fold_2 as mc_ch_f2
-from ptbench.configs.datasets.mc_ch_RS import fold_3 as mc_ch_f3
-from ptbench.configs.datasets.mc_ch_RS import fold_4 as mc_ch_f4
-from ptbench.configs.datasets.mc_ch_RS import fold_5 as mc_ch_f5
-from ptbench.configs.datasets.mc_ch_RS import fold_6 as mc_ch_f6
-from ptbench.configs.datasets.mc_ch_RS import fold_7 as mc_ch_f7
-from ptbench.configs.datasets.mc_ch_RS import fold_8 as mc_ch_f8
-from ptbench.configs.datasets.mc_ch_RS import fold_9 as mc_ch_f9
-from ptbench.configs.datasets.montgomery_RS import default as mc_RS
-from ptbench.configs.datasets.montgomery_RS import fold_0 as mc_f0
-from ptbench.configs.datasets.montgomery_RS import fold_1 as mc_f1
-from ptbench.configs.datasets.montgomery_RS import fold_2 as mc_f2
-from ptbench.configs.datasets.montgomery_RS import fold_3 as mc_f3
-from ptbench.configs.datasets.montgomery_RS import fold_4 as mc_f4
-from ptbench.configs.datasets.montgomery_RS import fold_5 as mc_f5
-from ptbench.configs.datasets.montgomery_RS import fold_6 as mc_f6
-from ptbench.configs.datasets.montgomery_RS import fold_7 as mc_f7
-from ptbench.configs.datasets.montgomery_RS import fold_8 as mc_f8
-from ptbench.configs.datasets.montgomery_RS import fold_9 as mc_f9
-from ptbench.configs.datasets.shenzhen_RS import default as ch_RS
-from ptbench.configs.datasets.shenzhen_RS import fold_0 as ch_f0
-from ptbench.configs.datasets.shenzhen_RS import fold_1 as ch_f1
-from ptbench.configs.datasets.shenzhen_RS import fold_2 as ch_f2
-from ptbench.configs.datasets.shenzhen_RS import fold_3 as ch_f3
-from ptbench.configs.datasets.shenzhen_RS import fold_4 as ch_f4
-from ptbench.configs.datasets.shenzhen_RS import fold_5 as ch_f5
-from ptbench.configs.datasets.shenzhen_RS import fold_6 as ch_f6
-from ptbench.configs.datasets.shenzhen_RS import fold_7 as ch_f7
-from ptbench.configs.datasets.shenzhen_RS import fold_8 as ch_f8
-from ptbench.configs.datasets.shenzhen_RS import fold_9 as ch_f9
-
 
 def test_dataset_consistency():
+    from ptbench.configs.datasets.mc_ch_RS import default as mc_ch_RS
+    from ptbench.configs.datasets.mc_ch_RS import fold_0 as mc_ch_f0
+    from ptbench.configs.datasets.mc_ch_RS import fold_1 as mc_ch_f1
+    from ptbench.configs.datasets.mc_ch_RS import fold_2 as mc_ch_f2
+    from ptbench.configs.datasets.mc_ch_RS import fold_3 as mc_ch_f3
+    from ptbench.configs.datasets.mc_ch_RS import fold_4 as mc_ch_f4
+    from ptbench.configs.datasets.mc_ch_RS import fold_5 as mc_ch_f5
+    from ptbench.configs.datasets.mc_ch_RS import fold_6 as mc_ch_f6
+    from ptbench.configs.datasets.mc_ch_RS import fold_7 as mc_ch_f7
+    from ptbench.configs.datasets.mc_ch_RS import fold_8 as mc_ch_f8
+    from ptbench.configs.datasets.mc_ch_RS import fold_9 as mc_ch_f9
+    from ptbench.configs.datasets.montgomery_RS import default as mc_RS
+    from ptbench.configs.datasets.montgomery_RS import fold_0 as mc_f0
+    from ptbench.configs.datasets.montgomery_RS import fold_1 as mc_f1
+    from ptbench.configs.datasets.montgomery_RS import fold_2 as mc_f2
+    from ptbench.configs.datasets.montgomery_RS import fold_3 as mc_f3
+    from ptbench.configs.datasets.montgomery_RS import fold_4 as mc_f4
+    from ptbench.configs.datasets.montgomery_RS import fold_5 as mc_f5
+    from ptbench.configs.datasets.montgomery_RS import fold_6 as mc_f6
+    from ptbench.configs.datasets.montgomery_RS import fold_7 as mc_f7
+    from ptbench.configs.datasets.montgomery_RS import fold_8 as mc_f8
+    from ptbench.configs.datasets.montgomery_RS import fold_9 as mc_f9
+    from ptbench.configs.datasets.shenzhen_RS import default as ch_RS
+    from ptbench.configs.datasets.shenzhen_RS import fold_0 as ch_f0
+    from ptbench.configs.datasets.shenzhen_RS import fold_1 as ch_f1
+    from ptbench.configs.datasets.shenzhen_RS import fold_2 as ch_f2
+    from ptbench.configs.datasets.shenzhen_RS import fold_3 as ch_f3
+    from ptbench.configs.datasets.shenzhen_RS import fold_4 as ch_f4
+    from ptbench.configs.datasets.shenzhen_RS import fold_5 as ch_f5
+    from ptbench.configs.datasets.shenzhen_RS import fold_6 as ch_f6
+    from ptbench.configs.datasets.shenzhen_RS import fold_7 as ch_f7
+    from ptbench.configs.datasets.shenzhen_RS import fold_8 as ch_f8
+    from ptbench.configs.datasets.shenzhen_RS import fold_9 as ch_f9
+
     # Default protocol
     mc_ch_RS_dataset = mc_ch_RS.dataset
     assert isinstance(mc_ch_RS_dataset, dict)
diff --git a/tests/test_mc_ch_in.py b/tests/test_mc_ch_in.py
index 2c5d55b9..0d1ea350 100644
--- a/tests/test_mc_ch_in.py
+++ b/tests/test_mc_ch_in.py
@@ -4,98 +4,93 @@
 
 """Tests for the aggregated Montgomery-Shenzhen-Indian dataset."""
 
-import pytest
-
-from ptbench.configs.datasets.indian import default as indian
-from ptbench.configs.datasets.indian import fold_0 as indian_f0
-from ptbench.configs.datasets.indian import fold_0_rgb as indian_f0_rgb
-from ptbench.configs.datasets.indian import fold_1 as indian_f1
-from ptbench.configs.datasets.indian import fold_1_rgb as indian_f1_rgb
-from ptbench.configs.datasets.indian import fold_2 as indian_f2
-from ptbench.configs.datasets.indian import fold_2_rgb as indian_f2_rgb
-from ptbench.configs.datasets.indian import fold_3 as indian_f3
-from ptbench.configs.datasets.indian import fold_3_rgb as indian_f3_rgb
-from ptbench.configs.datasets.indian import fold_4 as indian_f4
-from ptbench.configs.datasets.indian import fold_4_rgb as indian_f4_rgb
-from ptbench.configs.datasets.indian import fold_5 as indian_f5
-from ptbench.configs.datasets.indian import fold_5_rgb as indian_f5_rgb
-from ptbench.configs.datasets.indian import fold_6 as indian_f6
-from ptbench.configs.datasets.indian import fold_6_rgb as indian_f6_rgb
-from ptbench.configs.datasets.indian import fold_7 as indian_f7
-from ptbench.configs.datasets.indian import fold_7_rgb as indian_f7_rgb
-from ptbench.configs.datasets.indian import fold_8 as indian_f8
-from ptbench.configs.datasets.indian import fold_8_rgb as indian_f8_rgb
-from ptbench.configs.datasets.indian import fold_9 as indian_f9
-from ptbench.configs.datasets.indian import fold_9_rgb as indian_f9_rgb
-from ptbench.configs.datasets.mc_ch_in import default as mc_ch_in
-from ptbench.configs.datasets.mc_ch_in import fold_0 as mc_ch_in_f0
-from ptbench.configs.datasets.mc_ch_in import fold_0_rgb as mc_ch_in_f0_rgb
-from ptbench.configs.datasets.mc_ch_in import fold_1 as mc_ch_in_f1
-from ptbench.configs.datasets.mc_ch_in import fold_1_rgb as mc_ch_in_f1_rgb
-from ptbench.configs.datasets.mc_ch_in import fold_2 as mc_ch_in_f2
-from ptbench.configs.datasets.mc_ch_in import fold_2_rgb as mc_ch_in_f2_rgb
-from ptbench.configs.datasets.mc_ch_in import fold_3 as mc_ch_in_f3
-from ptbench.configs.datasets.mc_ch_in import fold_3_rgb as mc_ch_in_f3_rgb
-from ptbench.configs.datasets.mc_ch_in import fold_4 as mc_ch_in_f4
-from ptbench.configs.datasets.mc_ch_in import fold_4_rgb as mc_ch_in_f4_rgb
-from ptbench.configs.datasets.mc_ch_in import fold_5 as mc_ch_in_f5
-from ptbench.configs.datasets.mc_ch_in import fold_5_rgb as mc_ch_in_f5_rgb
-from ptbench.configs.datasets.mc_ch_in import fold_6 as mc_ch_in_f6
-from ptbench.configs.datasets.mc_ch_in import fold_6_rgb as mc_ch_in_f6_rgb
-from ptbench.configs.datasets.mc_ch_in import fold_7 as mc_ch_in_f7
-from ptbench.configs.datasets.mc_ch_in import fold_7_rgb as mc_ch_in_f7_rgb
-from ptbench.configs.datasets.mc_ch_in import fold_8 as mc_ch_in_f8
-from ptbench.configs.datasets.mc_ch_in import fold_8_rgb as mc_ch_in_f8_rgb
-from ptbench.configs.datasets.mc_ch_in import fold_9 as mc_ch_in_f9
-from ptbench.configs.datasets.mc_ch_in import fold_9_rgb as mc_ch_in_f9_rgb
-from ptbench.configs.datasets.montgomery import default as mc
-from ptbench.configs.datasets.montgomery import fold_0 as mc_f0
-from ptbench.configs.datasets.montgomery import fold_0_rgb as mc_f0_rgb
-from ptbench.configs.datasets.montgomery import fold_1 as mc_f1
-from ptbench.configs.datasets.montgomery import fold_1_rgb as mc_f1_rgb
-from ptbench.configs.datasets.montgomery import fold_2 as mc_f2
-from ptbench.configs.datasets.montgomery import fold_2_rgb as mc_f2_rgb
-from ptbench.configs.datasets.montgomery import fold_3 as mc_f3
-from ptbench.configs.datasets.montgomery import fold_3_rgb as mc_f3_rgb
-from ptbench.configs.datasets.montgomery import fold_4 as mc_f4
-from ptbench.configs.datasets.montgomery import fold_4_rgb as mc_f4_rgb
-from ptbench.configs.datasets.montgomery import fold_5 as mc_f5
-from ptbench.configs.datasets.montgomery import fold_5_rgb as mc_f5_rgb
-from ptbench.configs.datasets.montgomery import fold_6 as mc_f6
-from ptbench.configs.datasets.montgomery import fold_6_rgb as mc_f6_rgb
-from ptbench.configs.datasets.montgomery import fold_7 as mc_f7
-from ptbench.configs.datasets.montgomery import fold_7_rgb as mc_f7_rgb
-from ptbench.configs.datasets.montgomery import fold_8 as mc_f8
-from ptbench.configs.datasets.montgomery import fold_8_rgb as mc_f8_rgb
-from ptbench.configs.datasets.montgomery import fold_9 as mc_f9
-from ptbench.configs.datasets.montgomery import fold_9_rgb as mc_f9_rgb
-from ptbench.configs.datasets.shenzhen import default as ch
-from ptbench.configs.datasets.shenzhen import fold_0 as ch_f0
-from ptbench.configs.datasets.shenzhen import fold_0_rgb as ch_f0_rgb
-from ptbench.configs.datasets.shenzhen import fold_1 as ch_f1
-from ptbench.configs.datasets.shenzhen import fold_1_rgb as ch_f1_rgb
-from ptbench.configs.datasets.shenzhen import fold_2 as ch_f2
-from ptbench.configs.datasets.shenzhen import fold_2_rgb as ch_f2_rgb
-from ptbench.configs.datasets.shenzhen import fold_3 as ch_f3
-from ptbench.configs.datasets.shenzhen import fold_3_rgb as ch_f3_rgb
-from ptbench.configs.datasets.shenzhen import fold_4 as ch_f4
-from ptbench.configs.datasets.shenzhen import fold_4_rgb as ch_f4_rgb
-from ptbench.configs.datasets.shenzhen import fold_5 as ch_f5
-from ptbench.configs.datasets.shenzhen import fold_5_rgb as ch_f5_rgb
-from ptbench.configs.datasets.shenzhen import fold_6 as ch_f6
-from ptbench.configs.datasets.shenzhen import fold_6_rgb as ch_f6_rgb
-from ptbench.configs.datasets.shenzhen import fold_7 as ch_f7
-from ptbench.configs.datasets.shenzhen import fold_7_rgb as ch_f7_rgb
-from ptbench.configs.datasets.shenzhen import fold_8 as ch_f8
-from ptbench.configs.datasets.shenzhen import fold_8_rgb as ch_f8_rgb
-from ptbench.configs.datasets.shenzhen import fold_9 as ch_f9
-from ptbench.configs.datasets.shenzhen import fold_9_rgb as ch_f9_rgb
-
-
-@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
-@pytest.mark.skip_if_rc_var_not_set("datadir.shenzhen")
-@pytest.mark.skip_if_rc_var_not_set("datadir.indian")
+
 def test_dataset_consistency():
+    from ptbench.configs.datasets.indian import default as indian
+    from ptbench.configs.datasets.indian import fold_0 as indian_f0
+    from ptbench.configs.datasets.indian import fold_0_rgb as indian_f0_rgb
+    from ptbench.configs.datasets.indian import fold_1 as indian_f1
+    from ptbench.configs.datasets.indian import fold_1_rgb as indian_f1_rgb
+    from ptbench.configs.datasets.indian import fold_2 as indian_f2
+    from ptbench.configs.datasets.indian import fold_2_rgb as indian_f2_rgb
+    from ptbench.configs.datasets.indian import fold_3 as indian_f3
+    from ptbench.configs.datasets.indian import fold_3_rgb as indian_f3_rgb
+    from ptbench.configs.datasets.indian import fold_4 as indian_f4
+    from ptbench.configs.datasets.indian import fold_4_rgb as indian_f4_rgb
+    from ptbench.configs.datasets.indian import fold_5 as indian_f5
+    from ptbench.configs.datasets.indian import fold_5_rgb as indian_f5_rgb
+    from ptbench.configs.datasets.indian import fold_6 as indian_f6
+    from ptbench.configs.datasets.indian import fold_6_rgb as indian_f6_rgb
+    from ptbench.configs.datasets.indian import fold_7 as indian_f7
+    from ptbench.configs.datasets.indian import fold_7_rgb as indian_f7_rgb
+    from ptbench.configs.datasets.indian import fold_8 as indian_f8
+    from ptbench.configs.datasets.indian import fold_8_rgb as indian_f8_rgb
+    from ptbench.configs.datasets.indian import fold_9 as indian_f9
+    from ptbench.configs.datasets.indian import fold_9_rgb as indian_f9_rgb
+    from ptbench.configs.datasets.mc_ch_in import default as mc_ch_in
+    from ptbench.configs.datasets.mc_ch_in import fold_0 as mc_ch_in_f0
+    from ptbench.configs.datasets.mc_ch_in import fold_0_rgb as mc_ch_in_f0_rgb
+    from ptbench.configs.datasets.mc_ch_in import fold_1 as mc_ch_in_f1
+    from ptbench.configs.datasets.mc_ch_in import fold_1_rgb as mc_ch_in_f1_rgb
+    from ptbench.configs.datasets.mc_ch_in import fold_2 as mc_ch_in_f2
+    from ptbench.configs.datasets.mc_ch_in import fold_2_rgb as mc_ch_in_f2_rgb
+    from ptbench.configs.datasets.mc_ch_in import fold_3 as mc_ch_in_f3
+    from ptbench.configs.datasets.mc_ch_in import fold_3_rgb as mc_ch_in_f3_rgb
+    from ptbench.configs.datasets.mc_ch_in import fold_4 as mc_ch_in_f4
+    from ptbench.configs.datasets.mc_ch_in import fold_4_rgb as mc_ch_in_f4_rgb
+    from ptbench.configs.datasets.mc_ch_in import fold_5 as mc_ch_in_f5
+    from ptbench.configs.datasets.mc_ch_in import fold_5_rgb as mc_ch_in_f5_rgb
+    from ptbench.configs.datasets.mc_ch_in import fold_6 as mc_ch_in_f6
+    from ptbench.configs.datasets.mc_ch_in import fold_6_rgb as mc_ch_in_f6_rgb
+    from ptbench.configs.datasets.mc_ch_in import fold_7 as mc_ch_in_f7
+    from ptbench.configs.datasets.mc_ch_in import fold_7_rgb as mc_ch_in_f7_rgb
+    from ptbench.configs.datasets.mc_ch_in import fold_8 as mc_ch_in_f8
+    from ptbench.configs.datasets.mc_ch_in import fold_8_rgb as mc_ch_in_f8_rgb
+    from ptbench.configs.datasets.mc_ch_in import fold_9 as mc_ch_in_f9
+    from ptbench.configs.datasets.mc_ch_in import fold_9_rgb as mc_ch_in_f9_rgb
+    from ptbench.configs.datasets.montgomery import default as mc
+    from ptbench.configs.datasets.montgomery import fold_0 as mc_f0
+    from ptbench.configs.datasets.montgomery import fold_0_rgb as mc_f0_rgb
+    from ptbench.configs.datasets.montgomery import fold_1 as mc_f1
+    from ptbench.configs.datasets.montgomery import fold_1_rgb as mc_f1_rgb
+    from ptbench.configs.datasets.montgomery import fold_2 as mc_f2
+    from ptbench.configs.datasets.montgomery import fold_2_rgb as mc_f2_rgb
+    from ptbench.configs.datasets.montgomery import fold_3 as mc_f3
+    from ptbench.configs.datasets.montgomery import fold_3_rgb as mc_f3_rgb
+    from ptbench.configs.datasets.montgomery import fold_4 as mc_f4
+    from ptbench.configs.datasets.montgomery import fold_4_rgb as mc_f4_rgb
+    from ptbench.configs.datasets.montgomery import fold_5 as mc_f5
+    from ptbench.configs.datasets.montgomery import fold_5_rgb as mc_f5_rgb
+    from ptbench.configs.datasets.montgomery import fold_6 as mc_f6
+    from ptbench.configs.datasets.montgomery import fold_6_rgb as mc_f6_rgb
+    from ptbench.configs.datasets.montgomery import fold_7 as mc_f7
+    from ptbench.configs.datasets.montgomery import fold_7_rgb as mc_f7_rgb
+    from ptbench.configs.datasets.montgomery import fold_8 as mc_f8
+    from ptbench.configs.datasets.montgomery import fold_8_rgb as mc_f8_rgb
+    from ptbench.configs.datasets.montgomery import fold_9 as mc_f9
+    from ptbench.configs.datasets.montgomery import fold_9_rgb as mc_f9_rgb
+    from ptbench.configs.datasets.shenzhen import default as ch
+    from ptbench.configs.datasets.shenzhen import fold_0 as ch_f0
+    from ptbench.configs.datasets.shenzhen import fold_0_rgb as ch_f0_rgb
+    from ptbench.configs.datasets.shenzhen import fold_1 as ch_f1
+    from ptbench.configs.datasets.shenzhen import fold_1_rgb as ch_f1_rgb
+    from ptbench.configs.datasets.shenzhen import fold_2 as ch_f2
+    from ptbench.configs.datasets.shenzhen import fold_2_rgb as ch_f2_rgb
+    from ptbench.configs.datasets.shenzhen import fold_3 as ch_f3
+    from ptbench.configs.datasets.shenzhen import fold_3_rgb as ch_f3_rgb
+    from ptbench.configs.datasets.shenzhen import fold_4 as ch_f4
+    from ptbench.configs.datasets.shenzhen import fold_4_rgb as ch_f4_rgb
+    from ptbench.configs.datasets.shenzhen import fold_5 as ch_f5
+    from ptbench.configs.datasets.shenzhen import fold_5_rgb as ch_f5_rgb
+    from ptbench.configs.datasets.shenzhen import fold_6 as ch_f6
+    from ptbench.configs.datasets.shenzhen import fold_6_rgb as ch_f6_rgb
+    from ptbench.configs.datasets.shenzhen import fold_7 as ch_f7
+    from ptbench.configs.datasets.shenzhen import fold_7_rgb as ch_f7_rgb
+    from ptbench.configs.datasets.shenzhen import fold_8 as ch_f8
+    from ptbench.configs.datasets.shenzhen import fold_8_rgb as ch_f8_rgb
+    from ptbench.configs.datasets.shenzhen import fold_9 as ch_f9
+    from ptbench.configs.datasets.shenzhen import fold_9_rgb as ch_f9_rgb
+
     # Default protocol
     mc_ch_in_dataset = mc_ch_in.dataset
     assert isinstance(mc_ch_in_dataset, dict)
diff --git a/tests/test_mc_ch_in_RS.py b/tests/test_mc_ch_in_RS.py
index 79190007..37fe4e33 100644
--- a/tests/test_mc_ch_in_RS.py
+++ b/tests/test_mc_ch_in_RS.py
@@ -4,53 +4,53 @@
 
 """Tests for the aggregated Montgomery-Shenzhen-Indian dataset."""
 
-from ptbench.configs.datasets.indian_RS import default as indian_RS
-from ptbench.configs.datasets.indian_RS import fold_0 as indian_f0
-from ptbench.configs.datasets.indian_RS import fold_1 as indian_f1
-from ptbench.configs.datasets.indian_RS import fold_2 as indian_f2
-from ptbench.configs.datasets.indian_RS import fold_3 as indian_f3
-from ptbench.configs.datasets.indian_RS import fold_4 as indian_f4
-from ptbench.configs.datasets.indian_RS import fold_5 as indian_f5
-from ptbench.configs.datasets.indian_RS import fold_6 as indian_f6
-from ptbench.configs.datasets.indian_RS import fold_7 as indian_f7
-from ptbench.configs.datasets.indian_RS import fold_8 as indian_f8
-from ptbench.configs.datasets.indian_RS import fold_9 as indian_f9
-from ptbench.configs.datasets.mc_ch_in_RS import default as mc_ch_in_RS
-from ptbench.configs.datasets.mc_ch_in_RS import fold_0 as mc_ch_in_f0
-from ptbench.configs.datasets.mc_ch_in_RS import fold_1 as mc_ch_in_f1
-from ptbench.configs.datasets.mc_ch_in_RS import fold_2 as mc_ch_in_f2
-from ptbench.configs.datasets.mc_ch_in_RS import fold_3 as mc_ch_in_f3
-from ptbench.configs.datasets.mc_ch_in_RS import fold_4 as mc_ch_in_f4
-from ptbench.configs.datasets.mc_ch_in_RS import fold_5 as mc_ch_in_f5
-from ptbench.configs.datasets.mc_ch_in_RS import fold_6 as mc_ch_in_f6
-from ptbench.configs.datasets.mc_ch_in_RS import fold_7 as mc_ch_in_f7
-from ptbench.configs.datasets.mc_ch_in_RS import fold_8 as mc_ch_in_f8
-from ptbench.configs.datasets.mc_ch_in_RS import fold_9 as mc_ch_in_f9
-from ptbench.configs.datasets.montgomery_RS import default as mc_RS
-from ptbench.configs.datasets.montgomery_RS import fold_0 as mc_f0
-from ptbench.configs.datasets.montgomery_RS import fold_1 as mc_f1
-from ptbench.configs.datasets.montgomery_RS import fold_2 as mc_f2
-from ptbench.configs.datasets.montgomery_RS import fold_3 as mc_f3
-from ptbench.configs.datasets.montgomery_RS import fold_4 as mc_f4
-from ptbench.configs.datasets.montgomery_RS import fold_5 as mc_f5
-from ptbench.configs.datasets.montgomery_RS import fold_6 as mc_f6
-from ptbench.configs.datasets.montgomery_RS import fold_7 as mc_f7
-from ptbench.configs.datasets.montgomery_RS import fold_8 as mc_f8
-from ptbench.configs.datasets.montgomery_RS import fold_9 as mc_f9
-from ptbench.configs.datasets.shenzhen_RS import default as ch_RS
-from ptbench.configs.datasets.shenzhen_RS import fold_0 as ch_f0
-from ptbench.configs.datasets.shenzhen_RS import fold_1 as ch_f1
-from ptbench.configs.datasets.shenzhen_RS import fold_2 as ch_f2
-from ptbench.configs.datasets.shenzhen_RS import fold_3 as ch_f3
-from ptbench.configs.datasets.shenzhen_RS import fold_4 as ch_f4
-from ptbench.configs.datasets.shenzhen_RS import fold_5 as ch_f5
-from ptbench.configs.datasets.shenzhen_RS import fold_6 as ch_f6
-from ptbench.configs.datasets.shenzhen_RS import fold_7 as ch_f7
-from ptbench.configs.datasets.shenzhen_RS import fold_8 as ch_f8
-from ptbench.configs.datasets.shenzhen_RS import fold_9 as ch_f9
-
 
 def test_dataset_consistency():
+    from ptbench.configs.datasets.indian_RS import default as indian_RS
+    from ptbench.configs.datasets.indian_RS import fold_0 as indian_f0
+    from ptbench.configs.datasets.indian_RS import fold_1 as indian_f1
+    from ptbench.configs.datasets.indian_RS import fold_2 as indian_f2
+    from ptbench.configs.datasets.indian_RS import fold_3 as indian_f3
+    from ptbench.configs.datasets.indian_RS import fold_4 as indian_f4
+    from ptbench.configs.datasets.indian_RS import fold_5 as indian_f5
+    from ptbench.configs.datasets.indian_RS import fold_6 as indian_f6
+    from ptbench.configs.datasets.indian_RS import fold_7 as indian_f7
+    from ptbench.configs.datasets.indian_RS import fold_8 as indian_f8
+    from ptbench.configs.datasets.indian_RS import fold_9 as indian_f9
+    from ptbench.configs.datasets.mc_ch_in_RS import default as mc_ch_in_RS
+    from ptbench.configs.datasets.mc_ch_in_RS import fold_0 as mc_ch_in_f0
+    from ptbench.configs.datasets.mc_ch_in_RS import fold_1 as mc_ch_in_f1
+    from ptbench.configs.datasets.mc_ch_in_RS import fold_2 as mc_ch_in_f2
+    from ptbench.configs.datasets.mc_ch_in_RS import fold_3 as mc_ch_in_f3
+    from ptbench.configs.datasets.mc_ch_in_RS import fold_4 as mc_ch_in_f4
+    from ptbench.configs.datasets.mc_ch_in_RS import fold_5 as mc_ch_in_f5
+    from ptbench.configs.datasets.mc_ch_in_RS import fold_6 as mc_ch_in_f6
+    from ptbench.configs.datasets.mc_ch_in_RS import fold_7 as mc_ch_in_f7
+    from ptbench.configs.datasets.mc_ch_in_RS import fold_8 as mc_ch_in_f8
+    from ptbench.configs.datasets.mc_ch_in_RS import fold_9 as mc_ch_in_f9
+    from ptbench.configs.datasets.montgomery_RS import default as mc_RS
+    from ptbench.configs.datasets.montgomery_RS import fold_0 as mc_f0
+    from ptbench.configs.datasets.montgomery_RS import fold_1 as mc_f1
+    from ptbench.configs.datasets.montgomery_RS import fold_2 as mc_f2
+    from ptbench.configs.datasets.montgomery_RS import fold_3 as mc_f3
+    from ptbench.configs.datasets.montgomery_RS import fold_4 as mc_f4
+    from ptbench.configs.datasets.montgomery_RS import fold_5 as mc_f5
+    from ptbench.configs.datasets.montgomery_RS import fold_6 as mc_f6
+    from ptbench.configs.datasets.montgomery_RS import fold_7 as mc_f7
+    from ptbench.configs.datasets.montgomery_RS import fold_8 as mc_f8
+    from ptbench.configs.datasets.montgomery_RS import fold_9 as mc_f9
+    from ptbench.configs.datasets.shenzhen_RS import default as ch_RS
+    from ptbench.configs.datasets.shenzhen_RS import fold_0 as ch_f0
+    from ptbench.configs.datasets.shenzhen_RS import fold_1 as ch_f1
+    from ptbench.configs.datasets.shenzhen_RS import fold_2 as ch_f2
+    from ptbench.configs.datasets.shenzhen_RS import fold_3 as ch_f3
+    from ptbench.configs.datasets.shenzhen_RS import fold_4 as ch_f4
+    from ptbench.configs.datasets.shenzhen_RS import fold_5 as ch_f5
+    from ptbench.configs.datasets.shenzhen_RS import fold_6 as ch_f6
+    from ptbench.configs.datasets.shenzhen_RS import fold_7 as ch_f7
+    from ptbench.configs.datasets.shenzhen_RS import fold_8 as ch_f8
+    from ptbench.configs.datasets.shenzhen_RS import fold_9 as ch_f9
+
     # Default protocol
     mc_ch_in_RS_dataset = mc_ch_in_RS.dataset
     assert isinstance(mc_ch_in_RS_dataset, dict)
diff --git a/tests/test_mc_ch_in_pc.py b/tests/test_mc_ch_in_pc.py
index bfc3216f..59803a0f 100644
--- a/tests/test_mc_ch_in_pc.py
+++ b/tests/test_mc_ch_in_pc.py
@@ -4,20 +4,14 @@
 
 """Tests for the aggregated Montgomery-Shenzhen-Indian-Padchest dataset."""
 
-import pytest
 
-from ptbench.configs.datasets.indian import default as indian
-from ptbench.configs.datasets.mc_ch_in_pc import default as mc_ch_in_pc
-from ptbench.configs.datasets.montgomery import default as mc
-from ptbench.configs.datasets.padchest import tb_idiap as pc
-from ptbench.configs.datasets.shenzhen import default as ch
-
-
-@pytest.mark.skip_if_rc_var_not_set("datadir.montgomery")
-@pytest.mark.skip_if_rc_var_not_set("datadir.shenzhen")
-@pytest.mark.skip_if_rc_var_not_set("datadir.indian")
-@pytest.mark.skip_if_rc_var_not_set("datadir.padchest")
 def test_dataset_consistency():
+    from ptbench.configs.datasets.indian import default as indian
+    from ptbench.configs.datasets.mc_ch_in_pc import default as mc_ch_in_pc
+    from ptbench.configs.datasets.montgomery import default as mc
+    from ptbench.configs.datasets.padchest import tb_idiap as pc
+    from ptbench.configs.datasets.shenzhen import default as ch
+
     # Default protocol
     mc_ch_in_pc_dataset = mc_ch_in_pc.dataset
     assert isinstance(mc_ch_in_pc_dataset, dict)
diff --git a/tests/test_mc_ch_in_pc_RS.py b/tests/test_mc_ch_in_pc_RS.py
index 625393d6..40a199d0 100644
--- a/tests/test_mc_ch_in_pc_RS.py
+++ b/tests/test_mc_ch_in_pc_RS.py
@@ -4,14 +4,14 @@
 
 """Tests for the aggregated Montgomery-Shenzhen-Indian-Padchest(TB) dataset."""
 
-from ptbench.configs.datasets.indian_RS import default as in_RS
-from ptbench.configs.datasets.mc_ch_in_pc_RS import default as mc_ch_in_pc
-from ptbench.configs.datasets.montgomery_RS import default as mc_RS
-from ptbench.configs.datasets.padchest_RS import tb_idiap as pc_RS
-from ptbench.configs.datasets.shenzhen_RS import default as ch_RS
-
 
 def test_dataset_consistency():
+    from ptbench.configs.datasets.indian_RS import default as in_RS
+    from ptbench.configs.datasets.mc_ch_in_pc_RS import default as mc_ch_in_pc
+    from ptbench.configs.datasets.montgomery_RS import default as mc_RS
+    from ptbench.configs.datasets.padchest_RS import tb_idiap as pc_RS
+    from ptbench.configs.datasets.shenzhen_RS import default as ch_RS
+
     # Default protocol
     mc_ch_in_pc_dataset = mc_ch_in_pc.dataset
     assert isinstance(mc_ch_in_pc_dataset, dict)
diff --git a/tests/test_nih_cxr14.py b/tests/test_nih_cxr14.py
index b2c7f5aa..b00bf63f 100644
--- a/tests/test_nih_cxr14.py
+++ b/tests/test_nih_cxr14.py
@@ -6,10 +6,10 @@
 
 import pytest
 
-from ptbench.data.nih_cxr14_re import dataset
-
 
 def test_protocol_consistency():
+    from ptbench.data.nih_cxr14_re import dataset
+
     # Default protocol
     subset = dataset.subsets("default")
     assert len(subset) == 3
@@ -45,6 +45,8 @@ def test_protocol_consistency():
 
 @pytest.mark.skip_if_rc_var_not_set("datadir.nih_cxr14_re")
 def test_loading():
+    from ptbench.data.nih_cxr14_re import dataset
+
     def _check_size(size):
         if size == (1024, 1024):
             return True
diff --git a/tests/test_nih_cxr14_pc.py b/tests/test_nih_cxr14_pc.py
index 26ed6f63..4f0194de 100644
--- a/tests/test_nih_cxr14_pc.py
+++ b/tests/test_nih_cxr14_pc.py
@@ -4,16 +4,12 @@
 
 """Tests for the aggregated NIH CXR14-PadChest dataset."""
 
-import pytest
 
-from ptbench.configs.datasets.nih_cxr14_re import default as nih
-from ptbench.configs.datasets.nih_cxr14_re_pc import idiap as nih_pc
-from ptbench.configs.datasets.padchest import no_tb_idiap as pc
-
-
-@pytest.mark.skip_if_rc_var_not_set("datadir.padchest")
-@pytest.mark.skip_if_rc_var_not_set("datadir.nih_cxr14_re")
 def test_dataset_consistency():
+    from ptbench.configs.datasets.nih_cxr14_re import default as nih
+    from ptbench.configs.datasets.nih_cxr14_re_pc import idiap as nih_pc
+    from ptbench.configs.datasets.padchest import no_tb_idiap as pc
+
     # Default protocol
     nih_pc_dataset = nih_pc.dataset
     assert isinstance(nih_pc_dataset, dict)
diff --git a/tests/test_pc.py b/tests/test_pc.py
index b085e94a..6c6657a4 100644
--- a/tests/test_pc.py
+++ b/tests/test_pc.py
@@ -6,10 +6,10 @@
 
 import pytest
 
-from ptbench.data.padchest import dataset
-
 
 def test_protocol_consistency():
+    from ptbench.data.padchest import dataset
+
     # Default protocol
     subset = dataset.subsets("idiap")
     assert len(subset) == 1
@@ -63,4 +63,6 @@ def test_protocol_consistency():
 
 @pytest.mark.skip_if_rc_var_not_set("datadir.padchest")
 def test_check():
+    from ptbench.data.padchest import dataset
+
     assert dataset.check() == 0
diff --git a/tests/test_pc_RS.py b/tests/test_pc_RS.py
index f42d02ff..1ff99a8a 100644
--- a/tests/test_pc_RS.py
+++ b/tests/test_pc_RS.py
@@ -4,10 +4,10 @@
 
 """Tests for Extended Padchest dataset."""
 
-from ptbench.data.padchest_RS import dataset
-
 
 def test_protocol_consistency():
+    from ptbench.data.padchest_RS import dataset
+
     # tb_idiap protocol
     subset = dataset.subsets("tb_idiap")
     assert len(subset) == 3
@@ -33,6 +33,8 @@ def test_protocol_consistency():
 
 
 def test_loading():
+    from ptbench.data.padchest_RS import dataset
+
     def _check_sample(s):
         data = s.data
 
-- 
GitLab