diff --git a/romanisim/conftest.py b/romanisim/conftest.py deleted file mode 100644 index 4e71d71c..00000000 --- a/romanisim/conftest.py +++ /dev/null @@ -1,19 +0,0 @@ -import pytest - -ALL_TEST_NAMES = set() - - -def pytest_collection_modifyitems(config, items): - for item in items: - if not hasattr(item, "module"): - # for doctests just use name (since it contains the module) - name = item.name - else: - # otherwise add module - name = ".".join((item.module.__name__, item.name)) - ALL_TEST_NAMES.add(name) - - -@pytest.fixture -def all_test_names(): - return ALL_TEST_NAMES diff --git a/romanisim/tests/test_dms_requirements.py b/romanisim/tests/test_dms_requirements.py index e1b8806c..c1d385a2 100644 --- a/romanisim/tests/test_dms_requirements.py +++ b/romanisim/tests/test_dms_requirements.py @@ -1,20 +1,34 @@ import json +import re from pathlib import Path -TEST_REQUIREMENTS_FILENAME = Path(__file__).parent / "dms_requirement_tests.json" +TEST_DIRECTORY = Path(__file__).parent.parent +TEST_REQUIREMENTS_FILENAME = TEST_DIRECTORY / "dms_requirement_tests.json" -def test_requirements(all_test_names): +def test_requirements(): test_requirements_filename = TEST_REQUIREMENTS_FILENAME.expanduser().absolute() + test_directory = TEST_DIRECTORY.expanduser().absolute() with open(test_requirements_filename) as test_requirements_file: requirements = json.load(test_requirements_file) - required_test_names = { + required_tests = { test for requirement_tests in requirements.values() for test in requirement_tests } - missing_test_names = required_test_names - all_test_names - assert not missing_test_names, f"could not find the following tests correlated with DMS requirements: {missing_test_names}" + existing_tests = set() + test_regex = re.compile(r"def (test_[^\(]+)\(.*\):") + for test_filename in test_directory.glob("**/test_*.py"): + with open(test_filename) as test_file: + test_file_contents = test_file.read() + + for match in re.finditer(test_regex, test_file_contents): + test = f"{test_directory.stem}.{str(test_filename.relative_to(test_directory).parent).replace('/', '.')}.{test_filename.stem}.{match.group(1)}" + if test in required_tests: + existing_tests.add(test) + + missing_tests = required_tests - existing_tests + assert not missing_tests, f"could not find the following tests correlated with DMS requirements: {missing_tests}"