diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5d475d7263402c1ae4cb462db893b097df00497b..1d0afc9e4f1d1ba7e78e05edb9e4732bad3ce78f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/ambv/black - rev: 21.11b1 + rev: 21.12b0 hooks: - id: black - repo: https://gitlab.com/PyCQA/flake8 diff --git a/tests/conftest.py b/tests/conftest.py index 45c300485b2f03e15b5f468ad5aacbedfa00b6a6..09e82868b571f378e3ebcb1f04fc3a4951a0034a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -50,13 +50,14 @@ include $(E3_REQUIRE_TOOLS)/driver.makefile def add_file(self, name): (self.module_dir / name).touch() - def add_to_makefile(self, makefile_var, name): + def add_to_makefile(self, makefile_var, value, modifier="+"): + assert modifier in ["", "+", "?", ":", "!"] with open(self.makefile, "a") as f: - f.write(f"{makefile_var} += {name}\n") + f.write(f"{makefile_var} {modifier}= {value}\n") @pytest.fixture -def wrappers(tmpdir, request): +def wrappers(tmpdir): class WrapperFactory: def get(self, **kwargs): return Wrapper(Path(tmpdir), **kwargs) diff --git a/tests/test_build.py b/tests/test_build.py index f7b9b71cb741fdc3ba7629dfaa294be5607a0fd6..fadcef824f25b363be235c5a8156d550bf3abfc4 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -1,7 +1,7 @@ import re from pathlib import Path -from .utils import get_env_var, run_make +from .utils import get_env_var, run_ioc_get_output, run_make MODULE_VERSION = "0.0.0+0" MODULE_VERSION_NO_BUILD = "0.0.0" @@ -116,3 +116,51 @@ def test_header_install_location(wrapper): for ext in extensions: assert (Path(cell_path) / "include" / "subdir" / f"header.{ext}").is_file() assert not (Path(cell_path) / "include" / f"header.{ext}").is_file() + + +def test_updated_dependencies(wrappers): + wrapper_dep = wrappers.get() + wrapper_main = wrappers.get() + + cell_path = wrapper_main.path / "cellMods" + + old_version = "0.0.0+0" + + wrapper_main.add_to_makefile("REQUIRED", wrapper_dep.name) + wrapper_main.add_to_makefile( + f"{wrapper_dep.name}_VERSION", old_version, modifier="" + ) + + rc, *_ = run_make( + wrapper_dep, + "cellinstall", + E3_CELL_PATH=cell_path, + E3_MODULE_VERSION=old_version, + ) + assert rc == 0 + + rc, *_ = run_make(wrapper_main, "cellinstall", E3_MODULE_VERSION=old_version) + assert rc == 0 + + new_version = "1.0.0+0" + + rc, *_ = run_make( + wrapper_dep, + "cellinstall", + E3_CELL_PATH=cell_path, + E3_MODULE_VERSION=new_version, + ) + assert rc == 0 + + wrapper_main.add_to_makefile( + f"{wrapper_dep.name}_VERSION", new_version, modifier="" + ) + + rc, *_ = run_make(wrapper_main, "cellinstall", E3_MODULE_VERSION=new_version) + assert rc == 0 + + rc, o, _ = run_ioc_get_output( + wrapper_main.name, new_version, wrapper_main.path / "cellMods" + ) + assert rc == 0 + assert f"Loaded {wrapper_dep.name} version {new_version}" in o