diff --git a/pyproject.toml b/pyproject.toml index 39e9101ea37..7a663d17c39 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -135,7 +135,7 @@ xfail_strict = true astropy_header = true # print summary of failed tests, force errors if settings are misspelled -addopts = ["-ra", "--strict-config", "--strict-markers"] +addopts = ["-ra", "--strict-config", "--strict-markers", "--ignore-glob=src/ctapipe/_dev_version"] filterwarnings = [ "error::DeprecationWarning", diff --git a/src/ctapipe/tests/test_traitles_configurable.py b/src/ctapipe/tests/test_traitlets_configurable.py similarity index 82% rename from src/ctapipe/tests/test_traitles_configurable.py rename to src/ctapipe/tests/test_traitlets_configurable.py index a078a0cf762..74b59b1951f 100644 --- a/src/ctapipe/tests/test_traitles_configurable.py +++ b/src/ctapipe/tests/test_traitlets_configurable.py @@ -30,6 +30,8 @@ def test_all_traitlets_configurable(): + skip_modules = {"_dev_version", "tests"} + def find_all_traitlets(module, missing_config=None): module_name = module.__name__ @@ -37,6 +39,11 @@ def find_all_traitlets(module, missing_config=None): missing_config = defaultdict(set) for submodule_info in pkgutil.iter_modules(module.__path__): + submodule = submodule_info.name + + if submodule.startswith("test_") or submodule in skip_modules: + continue + submodule = importlib.import_module(module_name + "." + submodule_info.name) if submodule_info.ispkg: @@ -63,7 +70,8 @@ def find_all_traitlets(module, missing_config=None): return missing_config missing_config = find_all_traitlets(ctapipe) - # if the test files, we need to know which failed - for name, missing in missing_config.items(): - print("Class", name, "is missing .tag(config=True) for traitlets:", *missing) - assert len(missing_config) == 0 + msg = "\n".join( + f"Class {name} is missing .tag(config=True) for traitlets: {missing}" + for name, missing in missing_config.items() + ) + assert len(missing_config) == 0, msg