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"

Reply via email to