diff options
author | Tristan Van Berkom <tristan.van.berkom@gmail.com> | 2019-02-22 10:05:35 +0000 |
---|---|---|
committer | Tristan Van Berkom <tristan.van.berkom@gmail.com> | 2019-02-22 10:05:35 +0000 |
commit | 1170f18c4a12cf65543ac2adcffdc9242c2b6345 (patch) | |
tree | d8890820fa725bec3004e138c51295522c8d41eb | |
parent | fefc68fb7813a1be5a7bef6c45cdb248e7b2bafb (diff) | |
parent | e0238689550a9e6e979aa7a35bb4b7ead6b45c8f (diff) | |
download | buildstream-1170f18c4a12cf65543ac2adcffdc9242c2b6345.tar.gz |
Merge branch 'tristan/fix-overlap-subproject-policy' into 'master'
tests/frontend/overlaps.py: Added regression test for cross project overlaps
See merge request BuildStream/buildstream!1173
-rw-r--r-- | tests/frontend/overlaps.py | 39 | ||||
-rw-r--r-- | tests/frontend/overlaps/sub-collect.bst | 11 | ||||
-rw-r--r-- | tests/frontend/overlaps/sub-project/a-sub.bst | 7 | ||||
-rw-r--r-- | tests/frontend/overlaps/sub-project/files/a/file3 | 1 | ||||
-rw-r--r-- | tests/frontend/overlaps/sub-project/files/z/file1 | 1 | ||||
-rw-r--r-- | tests/frontend/overlaps/sub-project/files/z/file2 | 1 | ||||
-rw-r--r-- | tests/frontend/overlaps/sub-project/z-sub.bst | 7 |
7 files changed, 60 insertions, 7 deletions
diff --git a/tests/frontend/overlaps.py b/tests/frontend/overlaps.py index 22365e442..b58ac6bcd 100644 --- a/tests/frontend/overlaps.py +++ b/tests/frontend/overlaps.py @@ -4,6 +4,7 @@ from buildstream.plugintestutils.runcli import cli from buildstream._exceptions import ErrorDomain from buildstream import _yaml from buildstream.plugin import CoreWarnings +from tests.testutils import generate_junction # Project directory DATA_DIR = os.path.join( @@ -11,14 +12,11 @@ DATA_DIR = os.path.join( "overlaps" ) -project_template = { - "name": "test", - "element-path": "." -} - -def gen_project(project_dir, fail_on_overlap, use_fatal_warnings=True): - template = dict(project_template) +def gen_project(project_dir, fail_on_overlap, use_fatal_warnings=True, project_name="test"): + template = { + "name": project_name + } if use_fatal_warnings: template["fatal-warnings"] = [CoreWarnings.OVERLAPS] if fail_on_overlap else [] else: @@ -89,3 +87,30 @@ def test_overlaps_script(cli, datafiles, use_fatal_warnings): result = cli.run(project=project_dir, silent=True, args=[ 'build', 'script.bst']) result.assert_success() + + +@pytest.mark.datafiles(DATA_DIR) +@pytest.mark.parametrize("project_policy", [('fail'), ('warn')]) +@pytest.mark.parametrize("subproject_policy", [('fail'), ('warn')]) +def test_overlap_subproject(cli, tmpdir, datafiles, project_policy, subproject_policy): + project_dir = str(datafiles) + subproject_dir = os.path.join(project_dir, 'sub-project') + junction_path = os.path.join(project_dir, 'sub-project.bst') + + gen_project(project_dir, bool(project_policy == 'fail'), project_name='test') + gen_project(subproject_dir, bool(subproject_policy == 'fail'), project_name='subtest') + generate_junction(tmpdir, subproject_dir, junction_path) + + # Here we have a dependency chain where the project element + # always overlaps with the subproject element. + # + # Test that overlap error vs warning policy for this overlap + # is always controlled by the project and not the subproject. + # + result = cli.run(project=project_dir, silent=True, args=['build', 'sub-collect.bst']) + if project_policy == 'fail': + result.assert_main_error(ErrorDomain.STREAM, None) + result.assert_task_error(ErrorDomain.PLUGIN, CoreWarnings.OVERLAPS) + else: + result.assert_success() + assert "WARNING [overlaps]" in result.stderr diff --git a/tests/frontend/overlaps/sub-collect.bst b/tests/frontend/overlaps/sub-collect.bst new file mode 100644 index 000000000..85d327e1b --- /dev/null +++ b/tests/frontend/overlaps/sub-collect.bst @@ -0,0 +1,11 @@ +kind: compose + +depends: +- filename: c.bst + type: build +- filename: a-sub.bst + junction: sub-project.bst + type: build +- filename: z-sub.bst + junction: sub-project.bst + type: build diff --git a/tests/frontend/overlaps/sub-project/a-sub.bst b/tests/frontend/overlaps/sub-project/a-sub.bst new file mode 100644 index 000000000..40b8f5d9c --- /dev/null +++ b/tests/frontend/overlaps/sub-project/a-sub.bst @@ -0,0 +1,7 @@ +kind: import +config: + source: / + target: / +sources: +- kind: local + path: "files/a" diff --git a/tests/frontend/overlaps/sub-project/files/a/file3 b/tests/frontend/overlaps/sub-project/files/a/file3 new file mode 100644 index 000000000..e416e0d0d --- /dev/null +++ b/tests/frontend/overlaps/sub-project/files/a/file3 @@ -0,0 +1 @@ +barny diff --git a/tests/frontend/overlaps/sub-project/files/z/file1 b/tests/frontend/overlaps/sub-project/files/z/file1 new file mode 100644 index 000000000..257cc5642 --- /dev/null +++ b/tests/frontend/overlaps/sub-project/files/z/file1 @@ -0,0 +1 @@ +foo diff --git a/tests/frontend/overlaps/sub-project/files/z/file2 b/tests/frontend/overlaps/sub-project/files/z/file2 new file mode 100644 index 000000000..5716ca598 --- /dev/null +++ b/tests/frontend/overlaps/sub-project/files/z/file2 @@ -0,0 +1 @@ +bar diff --git a/tests/frontend/overlaps/sub-project/z-sub.bst b/tests/frontend/overlaps/sub-project/z-sub.bst new file mode 100644 index 000000000..e9729ae31 --- /dev/null +++ b/tests/frontend/overlaps/sub-project/z-sub.bst @@ -0,0 +1,7 @@ +kind: import +config: + source: / + target: / +sources: +- kind: local + path: "files/z" |