diff options
author | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2017-10-11 13:18:27 +0900 |
---|---|---|
committer | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2017-10-11 13:39:02 +0900 |
commit | f9df02735253ce530a7fa6c5fb11a4d9ded97a29 (patch) | |
tree | 07eafcc72307ba1bd399a2ce09aabc8bf8b3051c /tests | |
parent | 30be82c6f00e437c1dae070e1364083202762d9a (diff) | |
download | buildstream-f9df02735253ce530a7fa6c5fb11a4d9ded97a29.tar.gz |
tests/format/assertion.py: Added tests for the (!) assertion directive
Diffstat (limited to 'tests')
-rw-r--r-- | tests/format/assertion.py | 40 | ||||
-rw-r--r-- | tests/format/assertion/conditional-assertion.bst | 7 | ||||
-rw-r--r-- | tests/format/assertion/ordered-assertion.bst | 10 | ||||
-rw-r--r-- | tests/format/assertion/project.conf | 11 | ||||
-rw-r--r-- | tests/format/assertion/raw-assertion.bst | 6 |
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 |