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-29 19:04:23 +0900
commit03097d0e16561a61ad4e1ce4de0d2a6f461ebb04 (patch)
tree678cd996c06cb4eb27e7852076b83cf07210f975
parent24703a8434b48ebe58326f990e2d5a0474fe76da (diff)
downloadbuildstream-tristan/options-order.tar.gz
tests/format/include.py: Test preservation of conditionals at include timetristan/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.conf7
-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.conf11
-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.conf7
-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.conf15
-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.conf23
-rw-r--r--tests/format/include/conditional-conflicts-toplevel-precedence/work_around.yml5
26 files changed, 179 insertions, 0 deletions
diff --git a/tests/format/include.py b/tests/format/include.py
index d57dd8c19..11659d459 100644
--- a/tests/format/include.py
+++ b/tests/format/include.py
@@ -219,6 +219,30 @@ def test_conditional_in_fragment(cli, datafiles):
assert loaded.get_str("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.get_str("enable-work-around") == "true"
+ assert loaded.get_str("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..dd58ac234
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-complex/project.conf
@@ -0,0 +1,7 @@
+name: test
+min-version: 2.0
+
+(@):
+- 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..c6259d5f2
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-element/project.conf
@@ -0,0 +1,11 @@
+name: test
+min-version: 2.0
+
+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..364723e0c
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-options-included/project.conf
@@ -0,0 +1,7 @@
+name: test
+min-version: 2.0
+
+(@):
+- 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..6978fa813
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-project/project.conf
@@ -0,0 +1,15 @@
+name: test
+min-version: 2.0
+
+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..cdbaea502
--- /dev/null
+++ b/tests/format/include/conditional-conflicts-toplevel-precedence/project.conf
@@ -0,0 +1,23 @@
+name: test
+min-version: 2.0
+
+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"