summaryrefslogtreecommitdiff
path: root/tests/loader
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2017-07-15 18:23:14 +0900
committerTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2017-07-17 22:54:58 +0900
commitc8889b2fb24c276da01105306f07eb94e3504492 (patch)
tree548057854cd3f45ec4ea9c6ebc3e816c5f07b723 /tests/loader
parentcb310c2716d242157e8bd19415553b0f398adda0 (diff)
downloadbuildstream-c8889b2fb24c276da01105306f07eb94e3504492.tar.gz
variants.py tests: Added test cases to ensure LoadError() is raised for invalid variant requests
Diffstat (limited to 'tests/loader')
-rw-r--r--tests/loader/variants.py47
-rw-r--r--tests/loader/variants/elements/simple-unused-variant-invalid.bst14
-rw-r--r--tests/loader/variants/elements/simple-variant-invalid.bst5
3 files changed, 66 insertions, 0 deletions
diff --git a/tests/loader/variants.py b/tests/loader/variants.py
index 865ffa268..e0afe1949 100644
--- a/tests/loader/variants.py
+++ b/tests/loader/variants.py
@@ -76,6 +76,53 @@ def test_variant_illegal_composite(datafiles):
##############################################################
+# Test Invalid Variant Requests #
+##############################################################
+@pytest.mark.datafiles(DATA_DIR)
+def test_variant_invalid_target(datafiles):
+
+ # Test that an invalid variant requested as the pipeline target raises the appropriate error
+ basedir = os.path.join(datafiles.dirname, datafiles.basename)
+ loader = Loader(
+ basedir, 'elements/simple-variant-compositing.bst', 'green', None, None)
+
+ with pytest.raises(LoadError) as exc:
+ element = loader.load()
+
+ assert (exc.value.reason == LoadErrorReason.INVALID_VARIANT)
+
+
+@pytest.mark.datafiles(DATA_DIR)
+def test_variant_invalid_dependency(datafiles):
+
+ # Test that an invalid variant requested as an element dependency raises the appropriate error
+ basedir = os.path.join(datafiles.dirname, datafiles.basename)
+ loader = Loader(
+ basedir, 'elements/simple-variant-invalid.bst', None, None, None)
+
+ with pytest.raises(LoadError) as exc:
+ element = loader.load()
+
+ assert (exc.value.reason == LoadErrorReason.INVALID_VARIANT)
+
+
+@pytest.mark.datafiles(DATA_DIR)
+def test_variant_invalid_unused_dependency(datafiles):
+
+ # Test that an invalid variant requested as an element dependency which is
+ # unused in the effective variant resolution still raises the appropriate
+ # error (ensure that errors occur even on unused variant paths)
+ basedir = os.path.join(datafiles.dirname, datafiles.basename)
+ loader = Loader(
+ basedir, 'elements/simple-unused-variant-invalid.bst', 'blue', None, None)
+
+ with pytest.raises(LoadError) as exc:
+ element = loader.load()
+
+ assert (exc.value.reason == LoadErrorReason.INVALID_VARIANT)
+
+
+##############################################################
# Test Simple Variant Compositing #
##############################################################
@pytest.mark.datafiles(DATA_DIR)
diff --git a/tests/loader/variants/elements/simple-unused-variant-invalid.bst b/tests/loader/variants/elements/simple-unused-variant-invalid.bst
new file mode 100644
index 000000000..610bfaf76
--- /dev/null
+++ b/tests/loader/variants/elements/simple-unused-variant-invalid.bst
@@ -0,0 +1,14 @@
+kind: pony
+description: An element which depends on an invalid variant of a dependency
+variants:
+- variant: pink
+ config:
+ pony-color: pink
+ depends:
+ - filename: elements/simply-pink.bst
+ variant: green
+- variant: blue
+ config:
+ pony-color: blue
+ depends:
+ - elements/simply-blue.bst
diff --git a/tests/loader/variants/elements/simple-variant-invalid.bst b/tests/loader/variants/elements/simple-variant-invalid.bst
new file mode 100644
index 000000000..d8c2a40e7
--- /dev/null
+++ b/tests/loader/variants/elements/simple-variant-invalid.bst
@@ -0,0 +1,5 @@
+kind: pony
+description: An element which depends on an invalid variant of a dependency
+depends:
+- filename: elements/simple-variant-compositing.bst
+ variant: green