From 081be08d6c68594599e4abeefa6f7d96fb342709 Mon Sep 17 00:00:00 2001 From: Simon Rose <simon.rose@ess.eu> Date: Tue, 22 Jun 2021 09:41:15 +0200 Subject: [PATCH] Some cleanup --- tests/test_build.py | 3 +++ tests/test_versions.py | 6 ++---- tests/utils.py | 17 ++++++++++++++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/tests/test_build.py b/tests/test_build.py index 0ec304ba..35aa179a 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -79,5 +79,8 @@ def test_patch(wrapper): ) def test_missing_file(wrapper): rc, _, errs = run_make(wrapper, "build") + + # TODO: This should probably be a regex, since the quote marks seem to + # depend on the make version. assert "No rule to make target `../nonexistent.dbd'" in errs.decode("utf-8") assert rc == 2 diff --git a/tests/test_versions.py b/tests/test_versions.py index 19170948..20ba50ed 100644 --- a/tests/test_versions.py +++ b/tests/test_versions.py @@ -18,7 +18,7 @@ RE_MODULE_NOT_LOADED = f"Module {TEST_MODULE_NAME} (not available|version {{requ "requested, expected, installed", [ # If nothing is installed, nothing should be loaded - ("test", "", []), + ("", "", []), # Test versions can be loaded ("test", "test", ["test", "0.0.1"]), # Numeric versions should be prioritized over test versions @@ -42,14 +42,12 @@ RE_MODULE_NOT_LOADED = f"Module {TEST_MODULE_NAME} (not available|version {{requ ) def test_version(wrapper, requested, expected, installed): for version in installed: - returncode, o, e = run_make( + returncode, _, _ = run_make( wrapper, "clean", "cellinstall", E3_MODULE_VERSION=version, ) - print(o) - print(e) assert returncode == 0 rc, o, e = run_ioc_get_output(requested, wrapper / "cellMods") diff --git a/tests/utils.py b/tests/utils.py index c7158999..a8323e6b 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -34,6 +34,9 @@ HEADERS += {headers} def set_env_vars(env: dict) -> dict: + """ + Set a number of environment variables needed for require to build a module + """ assert "EPICS_BASE" in env assert Path(env["EPICS_BASE"]).is_dir assert "E3_REQUIRE_VERSION" in env @@ -46,16 +49,20 @@ def set_env_vars(env: dict) -> dict: REQUIRE_CONFIG = f"{E3_REQUIRE_LOCATION}/configure" env["REQUIRE_CONFIG"] = REQUIRE_CONFIG - # env["EPICS_MODULE_NAME"] = TEST_MODULE_NAME env["E3_MODULE_NAME"] = TEST_MODULE_NAME env["E3_MODULE_SRC_PATH"] = TEST_MODULE_NAME env["E3_MODULE_MAKEFILE"] = f"{TEST_MODULE_NAME}.Makefile" + + # Add a default version env["E3_MODULE_VERSION"] = "0.0.0" return env def run_make(path, *args, **kwargs): + """ + Attempt to run `make <args>` in the specified path with <kwargs> as environment variables + """ test_env = set_env_vars(os.environ.copy()) for kw in kwargs: test_env[kw] = kwargs[kw] @@ -68,6 +75,9 @@ def run_make(path, *args, **kwargs): def run_ioc_get_output(version, cell_path): + """ + Run an IOC and try to load the test module + """ with IOC("-r", f"{TEST_MODULE_NAME},{version}", "-l", cell_path) as ioc: time.sleep(1) return ioc.proc.returncode, ioc.outs, ioc.errs @@ -75,6 +85,11 @@ def run_ioc_get_output(version, cell_path): @pytest.fixture def wrapper(tmpdir, request): + """ + Sets up a wrapper with the minimal necessary configuration in order to build a module + + Note that a number of necessary variables are expected to be present in the environment + """ wrapper_dir = Path(tmpdir / "wrapper") test_dir = wrapper_dir / TEST_MODULE_NAME test_dir.mkdir(parents=True) -- GitLab