diff options
author | Benjamin Schubert <contact@benschubert.me> | 2020-05-14 07:36:57 +0000 |
---|---|---|
committer | bst-marge-bot <marge-bot@buildstream.build> | 2020-05-19 08:31:46 +0000 |
commit | a8b322246b54a5061fac9d47e743534b1c15fc08 (patch) | |
tree | 11b68228831bfb029a4bbd5deba315415f9abb30 /tests | |
parent | ef00fc2f384631a001442b5cd2b5765c58809720 (diff) | |
download | buildstream-a8b322246b54a5061fac9d47e743534b1c15fc08.tar.gz |
node.pyx: Deep clone ScalarNode toobschubert/ensure-composite-works-with-variables
This ensures that when resolving variables, we do not overwrite the
values for a different element in the case we were using composition.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/format/variables.py | 21 | ||||
-rw-r--r-- | tests/format/variables/shared_variables/one.bst | 6 | ||||
-rw-r--r-- | tests/format/variables/shared_variables/project.conf | 2 | ||||
-rw-r--r-- | tests/format/variables/shared_variables/shared.yml | 3 | ||||
-rw-r--r-- | tests/format/variables/shared_variables/two.bst | 6 |
5 files changed, 38 insertions, 0 deletions
diff --git a/tests/format/variables.py b/tests/format/variables.py index 81bda291b..5f07067f3 100644 --- a/tests/format/variables.py +++ b/tests/format/variables.py @@ -117,3 +117,24 @@ def test_use_of_protected_var_in_element(cli, datafiles, protected_var): result = cli.run(project=project, args=["build", "target.bst"]) result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.PROTECTED_VARIABLE_REDEFINED) + + +@pytest.mark.datafiles(os.path.join(DATA_DIR, "shared_variables")) +def test_variables_are_resolved_in_elements_context(cli, datafiles): + project = str(datafiles) + + result = cli.run(project=project, args=["build"]) + result.assert_success() + + checkout_dir = os.path.join(project, "checkout") + for elem in ["one", "two"]: + result = cli.run( + project=project, + args=["artifact", "checkout", "--directory", os.path.join(checkout_dir, elem), "{}.bst".format(elem)], + ) + result.assert_success() + + assert (os.listdir(os.path.join(checkout_dir, "one")), os.listdir(os.path.join(checkout_dir, "two"))) == ( + ["one.bst"], + ["two.bst"], + ) diff --git a/tests/format/variables/shared_variables/one.bst b/tests/format/variables/shared_variables/one.bst new file mode 100644 index 000000000..0f19e91b1 --- /dev/null +++ b/tests/format/variables/shared_variables/one.bst @@ -0,0 +1,6 @@ +kind: import + +(@): shared.yml + +variables: + import-path: one.bst diff --git a/tests/format/variables/shared_variables/project.conf b/tests/format/variables/shared_variables/project.conf new file mode 100644 index 000000000..ee1dfb2c7 --- /dev/null +++ b/tests/format/variables/shared_variables/project.conf @@ -0,0 +1,2 @@ +name: shared-vars +min-version: 2.0 diff --git a/tests/format/variables/shared_variables/shared.yml b/tests/format/variables/shared_variables/shared.yml new file mode 100644 index 000000000..8266757cd --- /dev/null +++ b/tests/format/variables/shared_variables/shared.yml @@ -0,0 +1,3 @@ +sources: + - kind: local + path: "%{import-path}" diff --git a/tests/format/variables/shared_variables/two.bst b/tests/format/variables/shared_variables/two.bst new file mode 100644 index 000000000..ad621d760 --- /dev/null +++ b/tests/format/variables/shared_variables/two.bst @@ -0,0 +1,6 @@ +kind: import + +(@): shared.yml + +variables: + import-path: two.bst |