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