From 1f71c033756d6320512bce3b1844fcb1b4381ab3 Mon Sep 17 00:00:00 2001
From: Simon Rose <simon.rose@ess.eu>
Date: Tue, 22 Mar 2022 13:53:09 +0100
Subject: [PATCH] Two more tests

* One test to catch invalid dependencies
* One test to catch architecture-dependent dependencies. Note that this itself does depend on
  the underlying architecture, which probably should be improved. But at the moment we only
  build for linux-based architectures, so this should be ok.
---
 tests/test_build.py | 48 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/tests/test_build.py b/tests/test_build.py
index 21e64be6..03225125 100644
--- a/tests/test_build.py
+++ b/tests/test_build.py
@@ -190,6 +190,54 @@ def test_automated_dependency(wrappers):
         assert f"{wrapper_b.name} {module_version}" == contents[1]
 
 
+def test_missing_dependency(wrappers):
+    wrapper_a = wrappers.get()
+    wrapper_b = wrappers.get()
+
+    wrapper_a.add_var_to_config_module(f"{wrapper_b.name}_DEP_VERSION", "bar")
+
+    rc, _, errs = wrapper_a.run_make("build")
+    assert rc == 0
+    assert f'Invalid dependency "{wrapper_b.name}_DEP_VERSION"; pruning' in errs
+
+
+def test_architecture_dependent_dependency(wrappers):
+    wrapper_a = wrappers.get()
+    wrapper_b = wrappers.get()
+    wrapper_c = wrappers.get()
+
+    cell_path = wrapper_a.path / "cellMods"
+
+    module_version = "0.0.0+0"
+
+    wrapper_a.add_var_to_config_module(
+        f"{wrapper_b.name}_DEP_VERSION_linux", module_version
+    )
+    wrapper_a.add_var_to_config_module(
+        f"{wrapper_c.name}_DEP_VERSION_not_an_arch", module_version
+    )
+
+    rc, *_ = wrapper_c.run_make(
+        "cellinstall", module_version=module_version, cell_path=cell_path
+    )
+    assert rc == 0
+    rc, *_ = wrapper_b.run_make(
+        "cellinstall", module_version=module_version, cell_path=cell_path
+    )
+    assert rc == 0
+    rc, *_ = wrapper_a.run_make(
+        "cellinstall", module_version=module_version, cell_path=cell_path
+    )
+    assert rc == 0
+
+    rc, outs, _ = run_ioc_get_output(
+        wrapper_a.name, module_version, wrapper_a.path / "cellMods"
+    )
+    assert rc == 0
+    assert f"Loaded {wrapper_b.name} version {module_version}" in outs
+    assert f"Loaded {wrapper_c.name} version {module_version}" not in outs
+
+
 def test_recursive_header_include(wrappers):
     wrapper_a = wrappers.get()
     wrapper_b = wrappers.get()
-- 
GitLab