summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Ennis <james.ennis@codethink.co.uk>2019-02-28 17:59:32 +0000
committerJames Ennis <james.ennis@codethink.co.uk>2019-03-12 10:20:04 +0000
commitf2981594a661a49f52d27cee4b3edb301359fe4d (patch)
treebd7caed69f371d6e5b24726e7562798abf3fbfa8
parentbb830367d2c4e2683fe0f7594022792b40152fea (diff)
downloadbuildstream-jennis/assert_composition_failure.tar.gz
tests: Add tests to ensure that overwriting on later compositions worksjennis/assert_composition_failure
-rw-r--r--tests/format/include.py17
-rw-r--r--tests/format/include/eventual_overrides/element.bst11
-rw-r--r--tests/format/include/eventual_overrides/extra_conf.yml8
-rw-r--r--tests/format/include/eventual_overrides/extra_conf2.yml2
-rw-r--r--tests/format/include/eventual_overrides/project.conf1
-rw-r--r--tests/format/include_composition.py24
6 files changed, 63 insertions, 0 deletions
diff --git a/tests/format/include.py b/tests/format/include.py
index 83e19ad28..d065f2447 100644
--- a/tests/format/include.py
+++ b/tests/format/include.py
@@ -199,6 +199,23 @@ def test_include_element_overrides_composition(cli, datafiles):
@pytest.mark.datafiles(DATA_DIR)
+def test_list_overide_does_not_fail_upon_first_composition(cli, datafiles):
+ project = os.path.join(str(datafiles), 'eventual_overrides')
+
+ result = cli.run(project=project, args=[
+ 'show',
+ '--deps', 'none',
+ '--format', '%{public}',
+ 'element.bst'])
+ result.assert_success()
+ loaded = _yaml.load_data(result.output)
+
+ # Assert that the explicitly overwritten public data is present
+ assert 'foo-commands' in loaded['bst']
+ assert loaded['bst']['foo-commands'] == ['need', 'this']
+
+
+@pytest.mark.datafiles(DATA_DIR)
def test_include_element_overrides_sub_include(cli, datafiles):
project = os.path.join(str(datafiles), 'sub-include')
diff --git a/tests/format/include/eventual_overrides/element.bst b/tests/format/include/eventual_overrides/element.bst
new file mode 100644
index 000000000..cd1fc9f51
--- /dev/null
+++ b/tests/format/include/eventual_overrides/element.bst
@@ -0,0 +1,11 @@
+kind: manual
+public:
+ bst:
+ foo-commands:
+ (=):
+ - need
+ - this
+
+(@):
+ - extra_conf.yml
+ - extra_conf2.yml
diff --git a/tests/format/include/eventual_overrides/extra_conf.yml b/tests/format/include/eventual_overrides/extra_conf.yml
new file mode 100644
index 000000000..8436310a0
--- /dev/null
+++ b/tests/format/include/eventual_overrides/extra_conf.yml
@@ -0,0 +1,8 @@
+public:
+ bst:
+ foo-commands:
+ - wrong
+ - commands
+
+variables:
+ included: 'True'
diff --git a/tests/format/include/eventual_overrides/extra_conf2.yml b/tests/format/include/eventual_overrides/extra_conf2.yml
new file mode 100644
index 000000000..88d469605
--- /dev/null
+++ b/tests/format/include/eventual_overrides/extra_conf2.yml
@@ -0,0 +1,2 @@
+variables:
+ included: 'False'
diff --git a/tests/format/include/eventual_overrides/project.conf b/tests/format/include/eventual_overrides/project.conf
new file mode 100644
index 000000000..b32753625
--- /dev/null
+++ b/tests/format/include/eventual_overrides/project.conf
@@ -0,0 +1 @@
+name: test
diff --git a/tests/format/include_composition.py b/tests/format/include_composition.py
index b73fca392..5a060132a 100644
--- a/tests/format/include_composition.py
+++ b/tests/format/include_composition.py
@@ -129,3 +129,27 @@ def test_main_keeps_keys(tmpdir):
assert main['test'] == ['a']
assert main['something'] == 'else'
+
+
+def test_overwrite_directive_on_later_composite(tmpdir):
+ includes = make_includes(str(tmpdir))
+
+ _yaml.dump({'(@)': ['a.yml', 'b.yml'],
+ 'test': {'(=)': ['Overwritten']}},
+ str(tmpdir.join('main.yml')))
+
+ main = _yaml.load(str(tmpdir.join('main.yml')))
+
+ # a.yml
+ _yaml.dump({'test': ['some useless', 'list', 'to be overwritten'],
+ 'foo': 'should not be present'},
+ str(tmpdir.join('a.yml')))
+
+ # b.yaml isn't going to have a 'test' node to overwrite
+ _yaml.dump({'foo': 'should be present'},
+ str(tmpdir.join('b.yml')))
+
+ includes.process(main)
+
+ assert main['test'] == ['Overwritten']
+ assert main['foo'] == 'should be present'