summaryrefslogtreecommitdiff
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-15 20:12:11 +0900
commitce389ed957045b300600786dd77e4d8a62ff157b (patch)
treec6d06eb40abf23d6e77eb472e44708c14cc034c9
parent97e66e23b1d266f9ee1354a05e60247a4578c984 (diff)
downloadbuildstream-ce389ed957045b300600786dd77e4d8a62ff157b.tar.gz
variants.py tests: Added test cases to ensure LoadError() is raised for invalid variant requests
-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