From f9df02735253ce530a7fa6c5fb11a4d9ded97a29 Mon Sep 17 00:00:00 2001 From: Tristan Van Berkom Date: Wed, 11 Oct 2017 13:18:27 +0900 Subject: tests/format/assertion.py: Added tests for the (!) assertion directive --- tests/format/assertion.py | 40 ++++++++++++++++++++++++ tests/format/assertion/conditional-assertion.bst | 7 +++++ tests/format/assertion/ordered-assertion.bst | 10 ++++++ tests/format/assertion/project.conf | 11 +++++++ tests/format/assertion/raw-assertion.bst | 6 ++++ 5 files changed, 74 insertions(+) create mode 100644 tests/format/assertion.py create mode 100644 tests/format/assertion/conditional-assertion.bst create mode 100644 tests/format/assertion/ordered-assertion.bst create mode 100644 tests/format/assertion/project.conf create mode 100644 tests/format/assertion/raw-assertion.bst 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 -- cgit v1.2.1