This is an automated email from the ASF dual-hosted git repository. tvb pushed a commit to branch tristan/relative-search-paths in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 6165611ba47bd6c5139617e6e23d3068231c3844 Author: Tristan van Berkom <[email protected]> AuthorDate: Sat Jun 6 19:47:07 2020 +0900 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). --- .../script/script-cross-junction-layout.bst | 21 +++++++++++++++++++++ .../project/elements/script/script-deep-target.bst | 4 ++++ tests/integration/project/elements/subproject.bst | 9 +++++++++ tests/integration/project/project.conf | 1 + .../project/subproject/elements/base.bst | 5 +++++ .../subproject/elements/base/base-alpine.bst | 17 +++++++++++++++++ .../script/script-cross-junction-layout.bst | 21 +++++++++++++++++++++ .../project/subproject/elements/script/script.bst | 9 +++++++++ .../project/subproject/elements/subsubproject.bst | 9 +++++++++ .../project/{ => subproject}/project.conf | 6 +----- .../subproject/subsubproject/elements/base.bst | 5 +++++ .../subsubproject/elements/base/base-alpine.bst | 17 +++++++++++++++++ .../subsubproject/elements/script/script.bst | 9 +++++++++ .../{ => subproject/subsubproject}/project.conf | 6 +----- tests/integration/script.py | 20 +++++++++++++++----- 15 files changed, 144 insertions(+), 15 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 0000000..ad67835 --- /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 0000000..14935dd --- /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 0000000..0ac454f --- /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 2d3da46..1a48f9e 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 0000000..428afa7 --- /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 0000000..c583309 --- /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 0000000..58ccdec --- /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 0000000..1bb24f6 --- /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 0000000..c38d621 --- /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/project.conf b/tests/integration/project/subproject/project.conf similarity index 79% copy from tests/integration/project/project.conf copy to tests/integration/project/subproject/project.conf index 2d3da46..597157f 100644 --- a/tests/integration/project/project.conf +++ b/tests/integration/project/subproject/project.conf @@ -1,15 +1,11 @@ # Project config for frontend build test -name: 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: - linux: - type: bool - description: Whether to expect a linux platform - default: True arch: type: arch description: Current architecture 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 0000000..428afa7 --- /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 0000000..c583309 --- /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 0000000..8c45dd8 --- /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/project.conf b/tests/integration/project/subproject/subsubproject/project.conf similarity index 79% copy from tests/integration/project/project.conf copy to tests/integration/project/subproject/subsubproject/project.conf index 2d3da46..1108d6c 100644 --- a/tests/integration/project/project.conf +++ b/tests/integration/project/subproject/subsubproject/project.conf @@ -1,15 +1,11 @@ # Project config for frontend build test -name: 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: - linux: - type: bool - description: Whether to expect a linux platform - default: True arch: type: arch description: Current architecture diff --git a/tests/integration/script.py b/tests/integration/script.py index 35a3fdd..3d23f38 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) [email protected]( + "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"
