diff options
author | Tristan van Berkom <tristan.vanberkom@codethink.co.uk> | 2020-06-06 19:47:07 +0900 |
---|---|---|
committer | Tristan van Berkom <tristan.vanberkom@codethink.co.uk> | 2020-07-25 18:05:49 +0900 |
commit | 6165611ba47bd6c5139617e6e23d3068231c3844 (patch) | |
tree | dbd32eeace012b87c2abc7ed2c9ddfa1d3dc961b | |
parent | 926a9186a226a5c2eb19d24f47eb2592c2edb484 (diff) | |
download | buildstream-6165611ba47bd6c5139617e6e23d3068231c3844.tar.gz |
tests/integration/script.py: Test element relative search paths in Element.search()
This adds some subprojects to the integration test, and extends the script
layout test such that it tests:
* The original layout test
* Addressing elements in subprojects
* Addressing elements in subprojects when also loaded as a subproject
(i.e. this test that searches are element relative, and not
simply searches for full element paths).
15 files changed, 184 insertions, 5 deletions
diff --git a/tests/integration/project/elements/script/script-cross-junction-layout.bst b/tests/integration/project/elements/script/script-cross-junction-layout.bst new file mode 100644 index 000000000..ad6783569 --- /dev/null +++ b/tests/integration/project/elements/script/script-cross-junction-layout.bst @@ -0,0 +1,21 @@ +kind: script +description: Write to root using a script element + +variables: + install-root: /buildstream/nstall + build-root: /buildstream/uild + +build-depends: + - subproject.bst:base.bst + - subproject.bst:script/script.bst + +config: + layout: + - element: subproject.bst:base.bst + destination: / + + - element: subproject.bst:script/script.bst + destination: /buildstream/uild + + commands: + - "cp %{build-root}/subtest %{install-root}" diff --git a/tests/integration/project/elements/script/script-deep-target.bst b/tests/integration/project/elements/script/script-deep-target.bst new file mode 100644 index 000000000..14935dd14 --- /dev/null +++ b/tests/integration/project/elements/script/script-deep-target.bst @@ -0,0 +1,4 @@ +kind: stack + +depends: +- subproject.bst:script/script-cross-junction-layout.bst diff --git a/tests/integration/project/elements/subproject.bst b/tests/integration/project/elements/subproject.bst new file mode 100644 index 000000000..0ac454f0e --- /dev/null +++ b/tests/integration/project/elements/subproject.bst @@ -0,0 +1,9 @@ +kind: junction + +sources: +- kind: local + path: subproject + +config: + options: + arch: "%{build_arch}" diff --git a/tests/integration/project/project.conf b/tests/integration/project/project.conf index 2d3da467b..1a48f9ee3 100644 --- a/tests/integration/project/project.conf +++ b/tests/integration/project/project.conf @@ -10,6 +10,7 @@ options: type: bool description: Whether to expect a linux platform default: True + variable: linux arch: type: arch description: Current architecture diff --git a/tests/integration/project/subproject/elements/base.bst b/tests/integration/project/subproject/elements/base.bst new file mode 100644 index 000000000..428afa736 --- /dev/null +++ b/tests/integration/project/subproject/elements/base.bst @@ -0,0 +1,5 @@ +# elements/base.bst + +kind: stack +depends: + - base/base-alpine.bst diff --git a/tests/integration/project/subproject/elements/base/base-alpine.bst b/tests/integration/project/subproject/elements/base/base-alpine.bst new file mode 100644 index 000000000..c5833095d --- /dev/null +++ b/tests/integration/project/subproject/elements/base/base-alpine.bst @@ -0,0 +1,17 @@ +kind: import + +description: | + Alpine Linux base for tests + + Generated using the `tests/integration-tests/base/generate-base.sh` script. + +sources: + - kind: tar + base-dir: '' + (?): + - arch == "x86-64": + ref: 3eb559250ba82b64a68d86d0636a6b127aa5f6d25d3601a79f79214dc9703639 + url: "alpine:integration-tests-base.v1.x86_64.tar.xz" + - arch == "aarch64": + ref: 431fb5362032ede6f172e70a3258354a8fd71fcbdeb1edebc0e20968c792329a + url: "alpine:integration-tests-base.v1.aarch64.tar.xz" diff --git a/tests/integration/project/subproject/elements/script/script-cross-junction-layout.bst b/tests/integration/project/subproject/elements/script/script-cross-junction-layout.bst new file mode 100644 index 000000000..58ccdec04 --- /dev/null +++ b/tests/integration/project/subproject/elements/script/script-cross-junction-layout.bst @@ -0,0 +1,21 @@ +kind: script +description: Write to root using a script element + +variables: + install-root: /buildstream/nstall + build-root: /buildstream/uild + +build-depends: + - subsubproject.bst:base.bst + - subsubproject.bst:script/script.bst + +config: + layout: + - element: subsubproject.bst:base.bst + destination: / + + - element: subsubproject.bst:script/script.bst + destination: /buildstream/uild + + commands: + - "cp %{build-root}/subsubtest %{install-root}" diff --git a/tests/integration/project/subproject/elements/script/script.bst b/tests/integration/project/subproject/elements/script/script.bst new file mode 100644 index 000000000..1bb24f631 --- /dev/null +++ b/tests/integration/project/subproject/elements/script/script.bst @@ -0,0 +1,9 @@ +kind: script +description: Script test + +build-depends: +- base.bst + +config: + commands: + - "echo 'Hi' > %{install-root}/subtest" diff --git a/tests/integration/project/subproject/elements/subsubproject.bst b/tests/integration/project/subproject/elements/subsubproject.bst new file mode 100644 index 000000000..c38d62163 --- /dev/null +++ b/tests/integration/project/subproject/elements/subsubproject.bst @@ -0,0 +1,9 @@ +kind: junction + +sources: +- kind: local + path: subsubproject + +config: + options: + arch: "%{build_arch}" diff --git a/tests/integration/project/subproject/project.conf b/tests/integration/project/subproject/project.conf new file mode 100644 index 000000000..597157fd1 --- /dev/null +++ b/tests/integration/project/subproject/project.conf @@ -0,0 +1,21 @@ +# Project config for frontend build test +name: subtest +min-version: 2.0 +element-path: elements +aliases: + alpine: https://bst-integration-test-images.ams3.cdn.digitaloceanspaces.com/ + project_dir: file://{project_dir} +options: + arch: + type: arch + description: Current architecture + variable: build_arch + values: + - x86-64 + - aarch64 +split-rules: + test: + - | + /tests + - | + /tests/* diff --git a/tests/integration/project/subproject/subsubproject/elements/base.bst b/tests/integration/project/subproject/subsubproject/elements/base.bst new file mode 100644 index 000000000..428afa736 --- /dev/null +++ b/tests/integration/project/subproject/subsubproject/elements/base.bst @@ -0,0 +1,5 @@ +# elements/base.bst + +kind: stack +depends: + - base/base-alpine.bst diff --git a/tests/integration/project/subproject/subsubproject/elements/base/base-alpine.bst b/tests/integration/project/subproject/subsubproject/elements/base/base-alpine.bst new file mode 100644 index 000000000..c5833095d --- /dev/null +++ b/tests/integration/project/subproject/subsubproject/elements/base/base-alpine.bst @@ -0,0 +1,17 @@ +kind: import + +description: | + Alpine Linux base for tests + + Generated using the `tests/integration-tests/base/generate-base.sh` script. + +sources: + - kind: tar + base-dir: '' + (?): + - arch == "x86-64": + ref: 3eb559250ba82b64a68d86d0636a6b127aa5f6d25d3601a79f79214dc9703639 + url: "alpine:integration-tests-base.v1.x86_64.tar.xz" + - arch == "aarch64": + ref: 431fb5362032ede6f172e70a3258354a8fd71fcbdeb1edebc0e20968c792329a + url: "alpine:integration-tests-base.v1.aarch64.tar.xz" diff --git a/tests/integration/project/subproject/subsubproject/elements/script/script.bst b/tests/integration/project/subproject/subsubproject/elements/script/script.bst new file mode 100644 index 000000000..8c45dd8a8 --- /dev/null +++ b/tests/integration/project/subproject/subsubproject/elements/script/script.bst @@ -0,0 +1,9 @@ +kind: script +description: Script test + +build-depends: +- base.bst + +config: + commands: + - "echo 'Hi' > %{install-root}/subsubtest" diff --git a/tests/integration/project/subproject/subsubproject/project.conf b/tests/integration/project/subproject/subsubproject/project.conf new file mode 100644 index 000000000..1108d6ca7 --- /dev/null +++ b/tests/integration/project/subproject/subsubproject/project.conf @@ -0,0 +1,21 @@ +# Project config for frontend build test +name: subsubtest +min-version: 2.0 +element-path: elements +aliases: + alpine: https://bst-integration-test-images.ams3.cdn.digitaloceanspaces.com/ + project_dir: file://{project_dir} +options: + arch: + type: arch + description: Current architecture + variable: build_arch + values: + - x86-64 + - aarch64 +split-rules: + test: + - | + /tests + - | + /tests/* diff --git a/tests/integration/script.py b/tests/integration/script.py index 35a3fddaf..3d23f3861 100644 --- a/tests/integration/script.py +++ b/tests/integration/script.py @@ -147,19 +147,29 @@ def test_script_cwd(cli, datafiles): @pytest.mark.datafiles(DATA_DIR) +@pytest.mark.parametrize( + "target,expect_file", + [ + # Basic test of the layout + ("script/script-layout.bst", "test"), + # Tests a script which addresses subproject elements with Element.search() + ("script/script-cross-junction-layout.bst", "subtest"), + # Tests element relative paths in Element.search() + ("script/script-deep-target.bst", "subsubtest"), + ], +) @pytest.mark.skipif(not HAVE_SANDBOX, reason="Only available with a functioning sandbox") -def test_script_layout(cli, datafiles): +def test_script_layout(cli, datafiles, target, expect_file): project = str(datafiles) checkout = os.path.join(cli.directory, "checkout") - element_name = "script/script-layout.bst" - res = cli.run(project=project, args=["build", element_name]) + res = cli.run(project=project, args=["build", target]) assert res.exit_code == 0 - cli.run(project=project, args=["artifact", "checkout", element_name, "--directory", checkout]) + cli.run(project=project, args=["artifact", "checkout", target, "--directory", checkout]) assert res.exit_code == 0 - with open(os.path.join(checkout, "test")) as f: + with open(os.path.join(checkout, expect_file)) as f: text = f.read() assert text == "Hi\n" |