diff options
author | Tristan Maat <tristan.maat@codethink.co.uk> | 2017-11-03 10:43:02 +0000 |
---|---|---|
committer | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2017-11-04 17:35:30 +0900 |
commit | e0c098dfaff8ddcef05e765979988bdf76b4cef1 (patch) | |
tree | 285415b0e76cb15dc4285b726b7554ec481421b2 | |
parent | 44b89d8c3418f415d9306743ec7849155ee46838 (diff) | |
download | buildstream-e0c098dfaff8ddcef05e765979988bdf76b4cef1.tar.gz |
Add tests for multiple targets
15 files changed, 103 insertions, 0 deletions
diff --git a/tests/frontend/project/elements/multiple_targets/dependency/horsey.bst b/tests/frontend/project/elements/multiple_targets/dependency/horsey.bst new file mode 100644 index 000000000..bd1ffae9c --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/dependency/horsey.bst @@ -0,0 +1,3 @@ +kind: autotools +depends: + - multiple_targets/dependency/pony.bst diff --git a/tests/frontend/project/elements/multiple_targets/dependency/pony.bst b/tests/frontend/project/elements/multiple_targets/dependency/pony.bst new file mode 100644 index 000000000..3c29b4ea1 --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/dependency/pony.bst @@ -0,0 +1 @@ +kind: autotools diff --git a/tests/frontend/project/elements/multiple_targets/dependency/zebry.bst b/tests/frontend/project/elements/multiple_targets/dependency/zebry.bst new file mode 100644 index 000000000..98447ab52 --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/dependency/zebry.bst @@ -0,0 +1,3 @@ +kind: autotools +depends: + - multiple_targets/dependency/horsey.bst diff --git a/tests/frontend/project/elements/multiple_targets/order/0.bst b/tests/frontend/project/elements/multiple_targets/order/0.bst new file mode 100644 index 000000000..a99be06a0 --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/order/0.bst @@ -0,0 +1,7 @@ +kind: autotools +description: Root node +depends: + - multiple_targets/order/2.bst + - multiple_targets/order/3.bst + - filename: multiple_targets/order/run.bst + type: runtime diff --git a/tests/frontend/project/elements/multiple_targets/order/1.bst b/tests/frontend/project/elements/multiple_targets/order/1.bst new file mode 100644 index 000000000..82b507a62 --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/order/1.bst @@ -0,0 +1,4 @@ +kind: autotools +description: Root node +depends: + - multiple_targets/order/9.bst diff --git a/tests/frontend/project/elements/multiple_targets/order/2.bst b/tests/frontend/project/elements/multiple_targets/order/2.bst new file mode 100644 index 000000000..ee1afae20 --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/order/2.bst @@ -0,0 +1,4 @@ +kind: autotools +description: First dependency level +depends: + - multiple_targets/order/3.bst diff --git a/tests/frontend/project/elements/multiple_targets/order/3.bst b/tests/frontend/project/elements/multiple_targets/order/3.bst new file mode 100644 index 000000000..4c3a23dab --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/order/3.bst @@ -0,0 +1,6 @@ +kind: autotools +description: Second dependency level +depends: + - multiple_targets/order/4.bst + - multiple_targets/order/5.bst + - multiple_targets/order/6.bst diff --git a/tests/frontend/project/elements/multiple_targets/order/4.bst b/tests/frontend/project/elements/multiple_targets/order/4.bst new file mode 100644 index 000000000..b663a0b52 --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/order/4.bst @@ -0,0 +1,2 @@ +kind: autotools +description: Third level dependency diff --git a/tests/frontend/project/elements/multiple_targets/order/5.bst b/tests/frontend/project/elements/multiple_targets/order/5.bst new file mode 100644 index 000000000..b9efcf71b --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/order/5.bst @@ -0,0 +1,2 @@ +kind: autotools +description: Fifth level dependency diff --git a/tests/frontend/project/elements/multiple_targets/order/6.bst b/tests/frontend/project/elements/multiple_targets/order/6.bst new file mode 100644 index 000000000..6c19d04e3 --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/order/6.bst @@ -0,0 +1,4 @@ +kind: autotools +description: Fourth level dependency +depends: + - multiple_targets/order/5.bst diff --git a/tests/frontend/project/elements/multiple_targets/order/7.bst b/tests/frontend/project/elements/multiple_targets/order/7.bst new file mode 100644 index 000000000..6805b3e6d --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/order/7.bst @@ -0,0 +1,4 @@ +kind: autotools +description: Third level dependency +depends: + - multiple_targets/order/6.bst diff --git a/tests/frontend/project/elements/multiple_targets/order/8.bst b/tests/frontend/project/elements/multiple_targets/order/8.bst new file mode 100644 index 000000000..b8d8964a0 --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/order/8.bst @@ -0,0 +1,4 @@ +kind: autotools +description: Second level dependency +depends: + - multiple_targets/order/7.bst diff --git a/tests/frontend/project/elements/multiple_targets/order/9.bst b/tests/frontend/project/elements/multiple_targets/order/9.bst new file mode 100644 index 000000000..cc13bf3f0 --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/order/9.bst @@ -0,0 +1,4 @@ +kind: autotools +description: First level dependency +depends: + - multiple_targets/order/8.bst diff --git a/tests/frontend/project/elements/multiple_targets/order/run.bst b/tests/frontend/project/elements/multiple_targets/order/run.bst new file mode 100644 index 000000000..9b3d2446c --- /dev/null +++ b/tests/frontend/project/elements/multiple_targets/order/run.bst @@ -0,0 +1,2 @@ +kind: autotools +description: Not a root node, yet built at the same time as root nodes diff --git a/tests/frontend/show.py b/tests/frontend/show.py index e6c754fbe..fde620137 100644 --- a/tests/frontend/show.py +++ b/tests/frontend/show.py @@ -1,5 +1,6 @@ import os import pytest +import itertools from tests.testutils.runcli import cli # Project directory @@ -53,3 +54,55 @@ def test_show_except(cli, datafiles, target, except_, expected): if results != expected: raise AssertionError("Expected elements:\n{}\nInstead received elements:\n{}" .format(expected, results)) + + +############################################################### +# Testing multiple targets # +############################################################### +@pytest.mark.datafiles(DATA_DIR) +def test_parallel_order(cli, tmpdir, datafiles): + project = os.path.join(datafiles.dirname, datafiles.basename) + elements = ['multiple_targets/order/0.bst', + 'multiple_targets/order/1.bst'] + + args = ['show', '-d', 'plan', '-f', '%{name}'] + elements + result = cli.run(project=project, args=args) + + assert result.exit_code == 0 + + # Get the planned order, excepting the 'Loading' messages before + # the pipeline is printed + names = result.output.splitlines()[3:] + names = [name[len('multiple_targets/order/'):] for name in names] + + # Create all possible 'correct' topological orderings + orderings = itertools.product( + [('5.bst', '6.bst')], + itertools.permutations(['4.bst', '7.bst']), + itertools.permutations(['3.bst', '8.bst']), + itertools.permutations(['2.bst', '9.bst']), + itertools.permutations(['0.bst', '1.bst', 'run.bst']) + ) + orderings = [list(itertools.chain.from_iterable(perm)) for perm in orderings] + + # Ensure that our order is among the correct orderings + assert names in orderings, "We got: {}".format(", ".join(names)) + + +@pytest.mark.datafiles(DATA_DIR) +def test_target_is_dependency(cli, tmpdir, datafiles): + project = os.path.join(datafiles.dirname, datafiles.basename) + elements = ['multiple_targets/dependency/zebry.bst', + 'multiple_targets/dependency/horsey.bst'] + + args = ['show', '-d', 'plan', '-f', '%{name}'] + elements + result = cli.run(project=project, args=args) + + assert result.exit_code == 0 + + # Get the planned order, excepting the 'Loading' messages before + # the pipeline is printed + names = result.output.splitlines()[3:] + names = [name[len('multiple_targets/dependency/'):] for name in names] + + assert names == ['pony.bst', 'horsey.bst', 'zebry.bst'] |