summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan van Berkom <tristan.vanberkom@codethink.co.uk>2020-07-21 17:44:57 +0900
committerTristan van Berkom <tristan.vanberkom@codethink.co.uk>2020-07-24 19:35:28 +0900
commit840c32d61eb934ad94e0ee8d0a7b69bceaf27156 (patch)
tree7204ce4e46795cce4967f9d79911c48caffc55eb
parentf9c82abb547aa0155ab07b7744800790ff3f13a3 (diff)
downloadbuildstream-tristan/bst-1/options-order.tar.gz
tests/format/include.py: Test preservation of conditionals at include timetristan/bst-1/options-order
Added tests to ensure that conditional statements don't get overwritten when performing composition of one dictionary on top of another due to include processing.
-rw-r--r--tests/format/include.py24
-rw-r--r--tests/format/include/conditional-conflicts-complex/element.bst1
-rw-r--r--tests/format/include/conditional-conflicts-complex/enable_work_around.yml5
-rw-r--r--tests/format/include/conditional-conflicts-complex/extra_conf.yml5
-rw-r--r--tests/format/include/conditional-conflicts-complex/extra_conf_i586.yml4
-rw-r--r--tests/format/include/conditional-conflicts-complex/extra_conf_x86_64.yml4
-rw-r--r--tests/format/include/conditional-conflicts-complex/options.yml9
-rw-r--r--tests/format/include/conditional-conflicts-complex/project.conf6
-rw-r--r--tests/format/include/conditional-conflicts-complex/work_around.yml3
-rw-r--r--tests/format/include/conditional-conflicts-element/element.bst5
-rw-r--r--tests/format/include/conditional-conflicts-element/extra_conf.yml6
-rw-r--r--tests/format/include/conditional-conflicts-element/project.conf10
-rw-r--r--tests/format/include/conditional-conflicts-element/work_around.yml5
-rw-r--r--tests/format/include/conditional-conflicts-options-included/element.bst1
-rw-r--r--tests/format/include/conditional-conflicts-options-included/extra_conf.yml6
-rw-r--r--tests/format/include/conditional-conflicts-options-included/options.yml9
-rw-r--r--tests/format/include/conditional-conflicts-options-included/project.conf6
-rw-r--r--tests/format/include/conditional-conflicts-options-included/work_around.yml5
-rw-r--r--tests/format/include/conditional-conflicts-project/element.bst1
-rw-r--r--tests/format/include/conditional-conflicts-project/extra_conf.yml6
-rw-r--r--tests/format/include/conditional-conflicts-project/project.conf14
-rw-r--r--tests/format/include/conditional-conflicts-project/work_around.yml5
-rw-r--r--tests/format/include/conditional-conflicts-toplevel-precedence/element.bst1
-rw-r--r--tests/format/include/conditional-conflicts-toplevel-precedence/extra_conf.yml6
-rw-r--r--tests/format/include/conditional-conflicts-toplevel-precedence/project.conf22
-rw-r--r--tests/format/include/conditional-conflicts-toplevel-precedence/work_around.yml5
26 files changed, 174 insertions, 0 deletions
diff --git a/tests/format/include.py b/tests/format/include.py
index cfbfb66e3..f844eadc5 100644
--- a/tests/format/include.py
+++ b/tests/format/include.py
@@ -205,6 +205,30 @@ def test_conditional_in_fragment(cli, tmpdir, datafiles):
assert loaded['size'] == '8'
+@pytest.mark.parametrize(
+ "project_dir",
+ [
+ "conditional-conflicts-project",
+ "conditional-conflicts-element",
+ "conditional-conflicts-options-included",
+ "conditional-conflicts-complex",
+ "conditional-conflicts-toplevel-precedence",
+ ],
+)
+@pytest.mark.datafiles(DATA_DIR)
+def test_preserve_conditionals(cli, datafiles, project_dir):
+ project = os.path.join(str(datafiles), project_dir)
+
+ result = cli.run(
+ project=project,
+ args=["-o", "build_arch", "i586", "show", "--deps", "none", "--format", "%{vars}", "element.bst"],
+ )
+ result.assert_success()
+ loaded = _yaml.load_data(result.output)
+ assert loaded["enable-work-around"] == "true"
+ assert loaded["size"] == "4"
+
+
@pytest.mark.datafiles(DATA_DIR)
def test_inner(cli, datafiles):
project = os.path.join(str(datafiles), 'inner')
diff --git a/tests/format/include/conditional-conflicts-complex/element.bst b/tests/format/include/conditional-conflicts-complex/element.bst
new file mode 100644
index 000000000..4d7f70266
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-complex/element.bst
@@ -0,0 +1 @@
+kind: manual
diff --git a/tests/format/include/conditional-conflicts-complex/enable_work_around.yml b/tests/format/include/conditional-conflicts-complex/enable_work_around.yml
new file mode 100644
index 000000000..7e56ae727
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-complex/enable_work_around.yml
@@ -0,0 +1,5 @@
+variables:
+ enable-work-around: "false"
+ (?):
+ - build_arch == "i586":
+ enable-work-around: "true"
diff --git a/tests/format/include/conditional-conflicts-complex/extra_conf.yml b/tests/format/include/conditional-conflicts-complex/extra_conf.yml
new file mode 100644
index 000000000..a25eabe23
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-complex/extra_conf.yml
@@ -0,0 +1,5 @@
+(?):
+- build_arch == "i586":
+ (@): extra_conf_i586.yml
+- build_arch == "x86_64":
+ (@): extra_conf_x86_64.yml
diff --git a/tests/format/include/conditional-conflicts-complex/extra_conf_i586.yml b/tests/format/include/conditional-conflicts-complex/extra_conf_i586.yml
new file mode 100644
index 000000000..caf872b98
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-complex/extra_conf_i586.yml
@@ -0,0 +1,4 @@
+variables:
+ (?):
+ - build_arch == "i586":
+ size: 4
diff --git a/tests/format/include/conditional-conflicts-complex/extra_conf_x86_64.yml b/tests/format/include/conditional-conflicts-complex/extra_conf_x86_64.yml
new file mode 100644
index 000000000..9c5f64630
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-complex/extra_conf_x86_64.yml
@@ -0,0 +1,4 @@
+variables:
+ (?):
+ - build_arch == "x86_64":
+ size: 8
diff --git a/tests/format/include/conditional-conflicts-complex/options.yml b/tests/format/include/conditional-conflicts-complex/options.yml
new file mode 100644
index 000000000..8bb07305a
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-complex/options.yml
@@ -0,0 +1,9 @@
+
+options:
+ build_arch:
+ type: arch
+ description: Architecture
+ variable: build_arch
+ values:
+ - i586
+ - x86_64
diff --git a/tests/format/include/conditional-conflicts-complex/project.conf b/tests/format/include/conditional-conflicts-complex/project.conf
new file mode 100644
index 000000000..2c7ca7044
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-complex/project.conf
@@ -0,0 +1,6 @@
+name: test
+
+(@):
+- extra_conf.yml
+- work_around.yml
+- options.yml
diff --git a/tests/format/include/conditional-conflicts-complex/work_around.yml b/tests/format/include/conditional-conflicts-complex/work_around.yml
new file mode 100644
index 000000000..d7e3ec1dc
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-complex/work_around.yml
@@ -0,0 +1,3 @@
+(?):
+- build_arch == "i586":
+ (@): enable_work_around.yml
diff --git a/tests/format/include/conditional-conflicts-element/element.bst b/tests/format/include/conditional-conflicts-element/element.bst
new file mode 100644
index 000000000..bb1ba25d4
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-element/element.bst
@@ -0,0 +1,5 @@
+kind: manual
+
+(@):
+ - extra_conf.yml
+ - work_around.yml
diff --git a/tests/format/include/conditional-conflicts-element/extra_conf.yml b/tests/format/include/conditional-conflicts-element/extra_conf.yml
new file mode 100644
index 000000000..dd58c9855
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-element/extra_conf.yml
@@ -0,0 +1,6 @@
+variables:
+ (?):
+ - build_arch == "i586":
+ size: "4"
+ - build_arch == "x86_64":
+ size: "8"
diff --git a/tests/format/include/conditional-conflicts-element/project.conf b/tests/format/include/conditional-conflicts-element/project.conf
new file mode 100644
index 000000000..e6ac8a701
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-element/project.conf
@@ -0,0 +1,10 @@
+name: test
+
+options:
+ build_arch:
+ type: arch
+ description: Architecture
+ variable: build_arch
+ values:
+ - i586
+ - x86_64
diff --git a/tests/format/include/conditional-conflicts-element/work_around.yml b/tests/format/include/conditional-conflicts-element/work_around.yml
new file mode 100644
index 000000000..a527fe124
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-element/work_around.yml
@@ -0,0 +1,5 @@
+variables:
+ enable-work-around: "false"
+ (?):
+ - build_arch == "i586":
+ enable-work-around: "true"
diff --git a/tests/format/include/conditional-conflicts-options-included/element.bst b/tests/format/include/conditional-conflicts-options-included/element.bst
new file mode 100644
index 000000000..4d7f70266
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-options-included/element.bst
@@ -0,0 +1 @@
+kind: manual
diff --git a/tests/format/include/conditional-conflicts-options-included/extra_conf.yml b/tests/format/include/conditional-conflicts-options-included/extra_conf.yml
new file mode 100644
index 000000000..dd58c9855
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-options-included/extra_conf.yml
@@ -0,0 +1,6 @@
+variables:
+ (?):
+ - build_arch == "i586":
+ size: "4"
+ - build_arch == "x86_64":
+ size: "8"
diff --git a/tests/format/include/conditional-conflicts-options-included/options.yml b/tests/format/include/conditional-conflicts-options-included/options.yml
new file mode 100644
index 000000000..8bb07305a
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-options-included/options.yml
@@ -0,0 +1,9 @@
+
+options:
+ build_arch:
+ type: arch
+ description: Architecture
+ variable: build_arch
+ values:
+ - i586
+ - x86_64
diff --git a/tests/format/include/conditional-conflicts-options-included/project.conf b/tests/format/include/conditional-conflicts-options-included/project.conf
new file mode 100644
index 000000000..ac1b06ad7
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-options-included/project.conf
@@ -0,0 +1,6 @@
+name: test
+
+(@):
+- options.yml
+- extra_conf.yml
+- work_around.yml
diff --git a/tests/format/include/conditional-conflicts-options-included/work_around.yml b/tests/format/include/conditional-conflicts-options-included/work_around.yml
new file mode 100644
index 000000000..a527fe124
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-options-included/work_around.yml
@@ -0,0 +1,5 @@
+variables:
+ enable-work-around: "false"
+ (?):
+ - build_arch == "i586":
+ enable-work-around: "true"
diff --git a/tests/format/include/conditional-conflicts-project/element.bst b/tests/format/include/conditional-conflicts-project/element.bst
new file mode 100644
index 000000000..4d7f70266
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-project/element.bst
@@ -0,0 +1 @@
+kind: manual
diff --git a/tests/format/include/conditional-conflicts-project/extra_conf.yml b/tests/format/include/conditional-conflicts-project/extra_conf.yml
new file mode 100644
index 000000000..dd58c9855
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-project/extra_conf.yml
@@ -0,0 +1,6 @@
+variables:
+ (?):
+ - build_arch == "i586":
+ size: "4"
+ - build_arch == "x86_64":
+ size: "8"
diff --git a/tests/format/include/conditional-conflicts-project/project.conf b/tests/format/include/conditional-conflicts-project/project.conf
new file mode 100644
index 000000000..82722e2c6
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-project/project.conf
@@ -0,0 +1,14 @@
+name: test
+
+options:
+ build_arch:
+ type: arch
+ description: Architecture
+ variable: build_arch
+ values:
+ - i586
+ - x86_64
+
+(@):
+ - extra_conf.yml
+ - work_around.yml
diff --git a/tests/format/include/conditional-conflicts-project/work_around.yml b/tests/format/include/conditional-conflicts-project/work_around.yml
new file mode 100644
index 000000000..a527fe124
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-project/work_around.yml
@@ -0,0 +1,5 @@
+variables:
+ enable-work-around: "false"
+ (?):
+ - build_arch == "i586":
+ enable-work-around: "true"
diff --git a/tests/format/include/conditional-conflicts-toplevel-precedence/element.bst b/tests/format/include/conditional-conflicts-toplevel-precedence/element.bst
new file mode 100644
index 000000000..4d7f70266
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-toplevel-precedence/element.bst
@@ -0,0 +1 @@
+kind: manual
diff --git a/tests/format/include/conditional-conflicts-toplevel-precedence/extra_conf.yml b/tests/format/include/conditional-conflicts-toplevel-precedence/extra_conf.yml
new file mode 100644
index 000000000..dd58c9855
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-toplevel-precedence/extra_conf.yml
@@ -0,0 +1,6 @@
+variables:
+ (?):
+ - build_arch == "i586":
+ size: "4"
+ - build_arch == "x86_64":
+ size: "8"
diff --git a/tests/format/include/conditional-conflicts-toplevel-precedence/project.conf b/tests/format/include/conditional-conflicts-toplevel-precedence/project.conf
new file mode 100644
index 000000000..1a970acde
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-toplevel-precedence/project.conf
@@ -0,0 +1,22 @@
+name: test
+
+options:
+ build_arch:
+ type: arch
+ description: Architecture
+ variable: build_arch
+ values:
+ - i586
+ - x86_64
+
+# The work_around.yml sets this to false in it's conditional
+# and we set it to true, testing here that the including
+# fragment still takes precedence over any included fragments.
+variables:
+ (?):
+ - build_arch == "i586":
+ enable-work-around: "true"
+
+(@):
+ - extra_conf.yml
+ - work_around.yml
diff --git a/tests/format/include/conditional-conflicts-toplevel-precedence/work_around.yml b/tests/format/include/conditional-conflicts-toplevel-precedence/work_around.yml
new file mode 100644
index 000000000..e9991aaba
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-toplevel-precedence/work_around.yml
@@ -0,0 +1,5 @@
+variables:
+ enable-work-around: "true"
+ (?):
+ - build_arch == "i586":
+ enable-work-around: "false"