diff options
author | Tristan van Berkom <tristan.vanberkom@codethink.co.uk> | 2020-07-21 17:44:57 +0900 |
---|---|---|
committer | Tristan van Berkom <tristan.vanberkom@codethink.co.uk> | 2020-07-24 19:35:28 +0900 |
commit | 840c32d61eb934ad94e0ee8d0a7b69bceaf27156 (patch) | |
tree | 7204ce4e46795cce4967f9d79911c48caffc55eb /tests/format | |
parent | f9c82abb547aa0155ab07b7744800790ff3f13a3 (diff) | |
download | buildstream-840c32d61eb934ad94e0ee8d0a7b69bceaf27156.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.
Diffstat (limited to 'tests/format')
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" |