diff options
author | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2019-03-09 20:10:18 +0900 |
---|---|---|
committer | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2019-03-09 20:59:48 +0900 |
commit | 792bf11b599116e49ece6a05971b4df708909781 (patch) | |
tree | 52479d0b9e2ea0eb1317421a73a04c3db6aa166b | |
parent | a204659b5fad61f0f446f09b1d28fadd5dbb64f0 (diff) | |
download | buildstream-tristan/missing-file-errors.tar.gz |
tests/format/junctions.py: Added tests for missing files across junction boundariestristan/missing-file-errors
These include assertions for the expected provenance in the errors,
protecting against regressions of #947
11 files changed, 66 insertions, 0 deletions
diff --git a/tests/format/junctions.py b/tests/format/junctions.py index 0c94bb51a..5c6ebd0bd 100644 --- a/tests/format/junctions.py +++ b/tests/format/junctions.py @@ -59,6 +59,36 @@ def test_build_of_same_junction_used_twice(cli, datafiles): @pytest.mark.datafiles(DATA_DIR) +def test_missing_file_in_subproject(cli, datafiles): + project = os.path.join(str(datafiles), 'missing-element') + result = cli.run(project=project, args=['show', 'target.bst']) + result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.MISSING_FILE) + + # Assert that we have the expected provenance encoded into the error + assert "target.bst [line 4 column 2]" in result.stderr + + +@pytest.mark.datafiles(DATA_DIR) +def test_missing_file_in_subsubproject(cli, datafiles): + project = os.path.join(str(datafiles), 'missing-element') + result = cli.run(project=project, args=['show', 'sub-target.bst']) + result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.MISSING_FILE) + + # Assert that we have the expected provenance encoded into the error + assert "junction-A.bst:target.bst [line 4 column 2]" in result.stderr + + +@pytest.mark.datafiles(DATA_DIR) +def test_missing_junction_in_subproject(cli, datafiles): + project = os.path.join(str(datafiles), 'missing-element') + result = cli.run(project=project, args=['show', 'sub-target-bad-junction.bst']) + result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.MISSING_FILE) + + # Assert that we have the expected provenance encoded into the error + assert "junction-A.bst:bad-junction-target.bst [line 4 column 2]" in result.stderr + + +@pytest.mark.datafiles(DATA_DIR) def test_nested_simple(cli, tmpdir, datafiles): foo = os.path.join(str(datafiles), 'foo') copy_subprojects(foo, datafiles, ['base']) diff --git a/tests/format/junctions/missing-element/junction-A.bst b/tests/format/junctions/missing-element/junction-A.bst new file mode 100644 index 000000000..74079f990 --- /dev/null +++ b/tests/format/junctions/missing-element/junction-A.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: junctionA diff --git a/tests/format/junctions/missing-element/junctionA/bad-junction-target.bst b/tests/format/junctions/missing-element/junctionA/bad-junction-target.bst new file mode 100644 index 000000000..c07c198cd --- /dev/null +++ b/tests/format/junctions/missing-element/junctionA/bad-junction-target.bst @@ -0,0 +1,5 @@ +kind: manual + +depends: +- filename: noelement.bst + junction: missing-junction.bst diff --git a/tests/format/junctions/missing-element/junctionA/junction-B.bst b/tests/format/junctions/missing-element/junctionA/junction-B.bst new file mode 100644 index 000000000..bc66d7851 --- /dev/null +++ b/tests/format/junctions/missing-element/junctionA/junction-B.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: junctionB diff --git a/tests/format/junctions/missing-element/junctionA/junctionB/project.conf b/tests/format/junctions/missing-element/junctionA/junctionB/project.conf new file mode 100644 index 000000000..41b8d6c72 --- /dev/null +++ b/tests/format/junctions/missing-element/junctionA/junctionB/project.conf @@ -0,0 +1 @@ +name: projectB diff --git a/tests/format/junctions/missing-element/junctionA/project.conf b/tests/format/junctions/missing-element/junctionA/project.conf new file mode 100644 index 000000000..5f6ab28a2 --- /dev/null +++ b/tests/format/junctions/missing-element/junctionA/project.conf @@ -0,0 +1 @@ +name: projectA diff --git a/tests/format/junctions/missing-element/junctionA/target.bst b/tests/format/junctions/missing-element/junctionA/target.bst new file mode 100644 index 000000000..9c3d0bf0e --- /dev/null +++ b/tests/format/junctions/missing-element/junctionA/target.bst @@ -0,0 +1,5 @@ +kind: stack + +depends: +- filename: missing.bst + junction: junction-B.bst diff --git a/tests/format/junctions/missing-element/project.conf b/tests/format/junctions/missing-element/project.conf new file mode 100644 index 000000000..b32753625 --- /dev/null +++ b/tests/format/junctions/missing-element/project.conf @@ -0,0 +1 @@ +name: test diff --git a/tests/format/junctions/missing-element/sub-target-bad-junction.bst b/tests/format/junctions/missing-element/sub-target-bad-junction.bst new file mode 100644 index 000000000..f48f6cec9 --- /dev/null +++ b/tests/format/junctions/missing-element/sub-target-bad-junction.bst @@ -0,0 +1,5 @@ +kind: stack + +depends: +- filename: bad-junction-target.bst + junction: junction-A.bst diff --git a/tests/format/junctions/missing-element/sub-target.bst b/tests/format/junctions/missing-element/sub-target.bst new file mode 100644 index 000000000..79e8bc684 --- /dev/null +++ b/tests/format/junctions/missing-element/sub-target.bst @@ -0,0 +1,5 @@ +kind: stack + +depends: +- filename: target.bst + junction: junction-A.bst diff --git a/tests/format/junctions/missing-element/target.bst b/tests/format/junctions/missing-element/target.bst new file mode 100644 index 000000000..69ecef75c --- /dev/null +++ b/tests/format/junctions/missing-element/target.bst @@ -0,0 +1,5 @@ +kind: stack + +depends: +- filename: missing.bst + junction: junction-A.bst |