summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Maw <jonathan.maw@codethink.co.uk>2018-08-09 17:57:51 +0100
committerTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2019-07-25 11:53:01 -0400
commit8184958aaea901f916fdeae7bc9c2eddb5cedf4c (patch)
tree8e25cbdbf0cde32fcb2496c772f1b00435e6c3d8
parent60e3e0ec6af2a099492ec94eac2196f66075a6ac (diff)
downloadbuildstream-8184958aaea901f916fdeae7bc9c2eddb5cedf4c.tar.gz
tests: Add tests for loading builddeps and runtime deps
-rw-r--r--tests/loader/dependencies.py53
-rw-r--r--tests/loader/dependencies/elements/builddep-list.bst4
-rw-r--r--tests/loader/dependencies/elements/firstdep.bst2
-rw-r--r--tests/loader/dependencies/elements/list-combine.bst8
-rw-r--r--tests/loader/dependencies/elements/list-overlap.bst7
-rw-r--r--tests/loader/dependencies/elements/runtimedep-list.bst4
-rw-r--r--tests/loader/dependencies/elements/seconddep.bst2
-rw-r--r--tests/loader/dependencies/elements/thirddep.bst2
8 files changed, 78 insertions, 4 deletions
diff --git a/tests/loader/dependencies.py b/tests/loader/dependencies.py
index 4bb13a380..cb750fcb1 100644
--- a/tests/loader/dependencies.py
+++ b/tests/loader/dependencies.py
@@ -3,6 +3,7 @@ import pytest
from buildstream._exceptions import LoadError, LoadErrorReason
from buildstream._loader import Loader, MetaElement
+from tests.testutils import cli
from . import make_loader
DATA_DIR = os.path.join(
@@ -27,7 +28,7 @@ def test_two_files(datafiles):
assert(len(element.dependencies) == 1)
firstdep = element.dependencies[0]
assert(isinstance(firstdep, MetaElement))
- assert(firstdep.kind == 'thefirstdep')
+ assert(firstdep.kind == 'manual')
@pytest.mark.datafiles(DATA_DIR)
@@ -47,7 +48,7 @@ def test_shared_dependency(datafiles):
#
firstdep = element.dependencies[0]
assert(isinstance(firstdep, MetaElement))
- assert(firstdep.kind == 'thefirstdep')
+ assert(firstdep.kind == 'manual')
assert(len(firstdep.dependencies) == 0)
# The second specified dependency is 'shareddep'
@@ -86,7 +87,7 @@ def test_dependency_dict(datafiles):
assert(len(element.dependencies) == 1)
firstdep = element.dependencies[0]
assert(isinstance(firstdep, MetaElement))
- assert(firstdep.kind == 'thefirstdep')
+ assert(firstdep.kind == 'manual')
@pytest.mark.datafiles(DATA_DIR)
@@ -186,3 +187,49 @@ def test_all_dependency(datafiles):
assert(isinstance(firstdep, MetaElement))
firstbuilddep = element.build_dependencies[0]
assert(firstdep == firstbuilddep)
+
+
+@pytest.mark.datafiles(DATA_DIR)
+def test_list_build_dependency(cli, datafiles):
+ project = str(datafiles)
+
+ # Check that the pipeline includes the build dependency
+ deps = cli.get_pipeline(project, ['elements/builddep-list.bst'], scope="build")
+ assert "elements/firstdep.bst" in deps
+
+
+@pytest.mark.datafiles(DATA_DIR)
+def test_list_runtime_dependency(cli, datafiles):
+ project = str(datafiles)
+
+ # Check that the pipeline includes the runtime dependency
+ deps = cli.get_pipeline(project, ['elements/runtimedep-list.bst'], scope="run")
+ assert "elements/firstdep.bst" in deps
+
+
+@pytest.mark.datafiles(DATA_DIR)
+def test_list_dependencies_combined(cli, datafiles):
+ project = str(datafiles)
+
+ # Check that runtime deps get combined
+ rundeps = cli.get_pipeline(project, ['elements/list-combine.bst'], scope="run")
+ assert "elements/firstdep.bst" not in rundeps
+ assert "elements/seconddep.bst" in rundeps
+ assert "elements/thirddep.bst" in rundeps
+
+ # Check that build deps get combined
+ builddeps = cli.get_pipeline(project, ['elements/list-combine.bst'], scope="build")
+ assert "elements/firstdep.bst" in builddeps
+ assert "elements/seconddep.bst" not in builddeps
+ assert "elements/thirddep.bst" in builddeps
+
+
+@pytest.mark.datafiles(DATA_DIR)
+def test_list_overlap(cli, datafiles):
+ project = str(datafiles)
+
+ # Check that dependencies get merged
+ rundeps = cli.get_pipeline(project, ['elements/list-overlap.bst'], scope="run")
+ assert "elements/firstdep.bst" in rundeps
+ builddeps = cli.get_pipeline(project, ['elements/list-overlap.bst'], scope="build")
+ assert "elements/firstdep.bst" in builddeps
diff --git a/tests/loader/dependencies/elements/builddep-list.bst b/tests/loader/dependencies/elements/builddep-list.bst
new file mode 100644
index 000000000..925de3afd
--- /dev/null
+++ b/tests/loader/dependencies/elements/builddep-list.bst
@@ -0,0 +1,4 @@
+kind: stack
+description: This element has a build-only dependency specified via build-depends
+build-depends:
+ - elements/firstdep.bst
diff --git a/tests/loader/dependencies/elements/firstdep.bst b/tests/loader/dependencies/elements/firstdep.bst
index 9b6a57824..5c9c1c1e6 100644
--- a/tests/loader/dependencies/elements/firstdep.bst
+++ b/tests/loader/dependencies/elements/firstdep.bst
@@ -1,2 +1,2 @@
-kind: thefirstdep
+kind: manual
description: This is the first dependency
diff --git a/tests/loader/dependencies/elements/list-combine.bst b/tests/loader/dependencies/elements/list-combine.bst
new file mode 100644
index 000000000..2010d7008
--- /dev/null
+++ b/tests/loader/dependencies/elements/list-combine.bst
@@ -0,0 +1,8 @@
+kind: stack
+description: This element depends on three elements in different ways
+build-depends:
+- elements/firstdep.bst
+runtime-depends:
+- elements/seconddep.bst
+depends:
+- elements/thirddep.bst
diff --git a/tests/loader/dependencies/elements/list-overlap.bst b/tests/loader/dependencies/elements/list-overlap.bst
new file mode 100644
index 000000000..1e98a20a5
--- /dev/null
+++ b/tests/loader/dependencies/elements/list-overlap.bst
@@ -0,0 +1,7 @@
+kind: stack
+description: This element depends on two elements in different ways
+build-depends:
+- elements/firstdep.bst
+depends:
+- filename: elements/firstdep.bst
+ type: runtime
diff --git a/tests/loader/dependencies/elements/runtimedep-list.bst b/tests/loader/dependencies/elements/runtimedep-list.bst
new file mode 100644
index 000000000..790fa4d54
--- /dev/null
+++ b/tests/loader/dependencies/elements/runtimedep-list.bst
@@ -0,0 +1,4 @@
+kind: stack
+description: This element has a runtime-only dependency
+runtime-depends:
+ - elements/firstdep.bst
diff --git a/tests/loader/dependencies/elements/seconddep.bst b/tests/loader/dependencies/elements/seconddep.bst
new file mode 100644
index 000000000..93ded4359
--- /dev/null
+++ b/tests/loader/dependencies/elements/seconddep.bst
@@ -0,0 +1,2 @@
+kind: manual
+description: This is the second dependency
diff --git a/tests/loader/dependencies/elements/thirddep.bst b/tests/loader/dependencies/elements/thirddep.bst
new file mode 100644
index 000000000..39b58e57a
--- /dev/null
+++ b/tests/loader/dependencies/elements/thirddep.bst
@@ -0,0 +1,2 @@
+kind: manual
+description: This is the third dependency