summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2017-10-11 13:18:27 +0900
committerTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2017-10-11 13:39:02 +0900
commitf9df02735253ce530a7fa6c5fb11a4d9ded97a29 (patch)
tree07eafcc72307ba1bd399a2ce09aabc8bf8b3051c
parent30be82c6f00e437c1dae070e1364083202762d9a (diff)
downloadbuildstream-f9df02735253ce530a7fa6c5fb11a4d9ded97a29.tar.gz
tests/format/assertion.py: Added tests for the (!) assertion directive
-rw-r--r--tests/format/assertion.py40
-rw-r--r--tests/format/assertion/conditional-assertion.bst7
-rw-r--r--tests/format/assertion/ordered-assertion.bst10
-rw-r--r--tests/format/assertion/project.conf11
-rw-r--r--tests/format/assertion/raw-assertion.bst6
5 files changed, 74 insertions, 0 deletions
diff --git a/tests/format/assertion.py b/tests/format/assertion.py
new file mode 100644
index 000000000..ec1305081
--- /dev/null
+++ b/tests/format/assertion.py
@@ -0,0 +1,40 @@
+import os
+import pytest
+from buildstream import _yaml
+from buildstream import LoadError, LoadErrorReason
+from tests.testutils.runcli import cli
+
+# Project directory
+DATA_DIR = os.path.join(
+ os.path.dirname(os.path.realpath(__file__)),
+ 'assertion'
+)
+
+
+@pytest.mark.datafiles(DATA_DIR)
+@pytest.mark.parametrize("target,opt_pony,opt_horsy,assertion", [
+ # Test an unconditional (!) directly in the element
+ ('raw-assertion.bst', 'False', 'False', 'Raw assertion boogey'),
+ # Test an assertion in a conditional
+ ('conditional-assertion.bst', 'True', 'False', "It's not pony time yet"),
+ # Test that we get the first composited assertion
+ ('ordered-assertion.bst', 'True', 'True', "It's not horsy time yet"),
+])
+def test_assertion_cli(cli, datafiles, target, opt_pony, opt_horsy, assertion):
+ project = os.path.join(datafiles.dirname, datafiles.basename)
+ result = cli.run(project=project, silent=True, args=[
+ '--option', 'pony', opt_pony,
+ '--option', 'horsy', opt_horsy,
+ 'show',
+ '--deps', 'none',
+ '--format', '%{vars}',
+ target])
+
+ assert result.exit_code != 0
+ assert result.exception
+ assert isinstance(result.exception, LoadError)
+ assert result.exception.reason == LoadErrorReason.USER_ASSERTION
+
+ # Assert that the assertion text provided by the user
+ # is found in the exception text
+ assert assertion in str(result.exception)
diff --git a/tests/format/assertion/conditional-assertion.bst b/tests/format/assertion/conditional-assertion.bst
new file mode 100644
index 000000000..e9f62e95b
--- /dev/null
+++ b/tests/format/assertion/conditional-assertion.bst
@@ -0,0 +1,7 @@
+kind: autotools
+variables:
+ thepony: "not pony"
+ (?):
+ - pony == True:
+ thepony: "It's a ponay !"
+ (!): It's not pony time yet
diff --git a/tests/format/assertion/ordered-assertion.bst b/tests/format/assertion/ordered-assertion.bst
new file mode 100644
index 000000000..77e04f9f4
--- /dev/null
+++ b/tests/format/assertion/ordered-assertion.bst
@@ -0,0 +1,10 @@
+kind: autotools
+variables:
+ thepony: "not pony"
+ (?):
+ - pony == True:
+ thepony: "It's a ponay !"
+ (!): It's not pony time yet
+ - horsy == True:
+ thepony: "It's a horsay !"
+ (!): It's not horsy time yet
diff --git a/tests/format/assertion/project.conf b/tests/format/assertion/project.conf
new file mode 100644
index 000000000..4c0016692
--- /dev/null
+++ b/tests/format/assertion/project.conf
@@ -0,0 +1,11 @@
+name: test
+
+options:
+ pony:
+ type: bool
+ description: Whether a pony or not
+ default: False
+ horsy:
+ type: bool
+ description: Whether a horsy or not
+ default: False
diff --git a/tests/format/assertion/raw-assertion.bst b/tests/format/assertion/raw-assertion.bst
new file mode 100644
index 000000000..e06006d25
--- /dev/null
+++ b/tests/format/assertion/raw-assertion.bst
@@ -0,0 +1,6 @@
+kind: autotools
+variables:
+ thepony: "not pony"
+ (!): |
+
+ Raw assertion boogey