diff --git a/tests/conftest.py b/tests/conftest.py index 7251b5b8f..e5a4a7302 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -14,10 +14,29 @@ def pytest_addoption(parser): action="store", help="Directory for (only-read) inputs for tests", ) + parser.addoption( + "--no-gpu", + action="store_true", + help="""To run tests on cpu. Default is False. + To use carefully, only to run tests locally. Should not be used in final CI tests. + Concretely, the tests won't fail if gpu option is false in the output MAPS whereas + it is true in the reference MAPS.""", + ) + parser.addoption( + "--adapt-base-dir", + action="store_true", + help="""To virtually change the base directory in the paths stored in the MAPS of the CI data. + Default is False. + To use carefully, only to run tests locally. Should not be used in final CI tests. + Concretely, the tests won't fail if only the base directories differ in the paths stored + in the output and reference MAPS.""", + ) @pytest.fixture def cmdopt(request): config_param = {} config_param["input"] = request.config.getoption("--input_data_directory") + config_param["no-gpu"] = request.config.getoption("--no-gpu") + config_param["adapt-base-dir"] = request.config.getoption("--adapt-base-dir") return config_param diff --git a/tests/test_train_ae.py b/tests/test_train_ae.py index ab9c057ff..311e145d0 100644 --- a/tests/test_train_ae.py +++ b/tests/test_train_ae.py @@ -88,6 +88,9 @@ def test_train_ae(cmdopt, tmp_path, test_name): else: raise NotImplementedError(f"Test {test_name} is not implemented.") + if cmdopt["no-gpu"]: + test_input.append("--no-gpu") + if tmp_out_dir.is_dir(): shutil.rmtree(tmp_out_dir) @@ -101,6 +104,17 @@ def test_train_ae(cmdopt, tmp_path, test_name): if test_name == "patch_multi_ae": json_data_out["multi_network"] = True + if cmdopt["no-gpu"]: + json_data_ref["gpu"] = False + if cmdopt["adapt-base-dir"]: + base_dir = base_dir.resolve() + ref_base_dir = Path(json_data_ref["caps_directory"]).parents[2] + json_data_ref["caps_directory"] = str( + base_dir / Path(json_data_ref["caps_directory"]).relative_to(ref_base_dir) + ) + json_data_ref["tsv_path"] = str( + base_dir / Path(json_data_ref["tsv_path"]).relative_to(ref_base_dir) + ) assert json_data_out == json_data_ref # ["mode"] == mode assert compare_folders(