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-29 19:04:23 +0900 |
commit | 03097d0e16561a61ad4e1ce4de0d2a6f461ebb04 (patch) | |
tree | 678cd996c06cb4eb27e7852076b83cf07210f975 /tests | |
parent | 24703a8434b48ebe58326f990e2d5a0474fe76da (diff) | |
download | buildstream-03097d0e16561a61ad4e1ce4de0d2a6f461ebb04.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.
Diffstat (limited to 'tests')
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" |