summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Maat <tristan.maat@codethink.co.uk>2017-11-03 10:43:02 +0000
committerTristan Maat <tristan.maat@codethink.co.uk>2017-11-03 13:55:58 +0000
commit34c9506d0274db9f8912a9038b36d91ebe6bb2c2 (patch)
tree3d3c58f80b81977b8238386db7ad394dc78a8795
parent36eb53ba9e2466bfe76a8ff32787dd78a650ad79 (diff)
downloadbuildstream-34c9506d0274db9f8912a9038b36d91ebe6bb2c2.tar.gz
Add tests for multiple targets
-rw-r--r--tests/frontend/project/elements/multiple_targets/dependency/horsey.bst3
-rw-r--r--tests/frontend/project/elements/multiple_targets/dependency/pony.bst1
-rw-r--r--tests/frontend/project/elements/multiple_targets/dependency/zebry.bst3
-rw-r--r--tests/frontend/project/elements/multiple_targets/order/0.bst7
-rw-r--r--tests/frontend/project/elements/multiple_targets/order/1.bst4
-rw-r--r--tests/frontend/project/elements/multiple_targets/order/2.bst4
-rw-r--r--tests/frontend/project/elements/multiple_targets/order/3.bst6
-rw-r--r--tests/frontend/project/elements/multiple_targets/order/4.bst2
-rw-r--r--tests/frontend/project/elements/multiple_targets/order/5.bst2
-rw-r--r--tests/frontend/project/elements/multiple_targets/order/6.bst4
-rw-r--r--tests/frontend/project/elements/multiple_targets/order/7.bst4
-rw-r--r--tests/frontend/project/elements/multiple_targets/order/8.bst4
-rw-r--r--tests/frontend/project/elements/multiple_targets/order/9.bst4
-rw-r--r--tests/frontend/project/elements/multiple_targets/order/run.bst2
-rw-r--r--tests/frontend/show.py53
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']