summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2019-03-09 20:10:18 +0900
committerTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2019-03-09 20:59:48 +0900
commit792bf11b599116e49ece6a05971b4df708909781 (patch)
tree52479d0b9e2ea0eb1317421a73a04c3db6aa166b
parenta204659b5fad61f0f446f09b1d28fadd5dbb64f0 (diff)
downloadbuildstream-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
-rw-r--r--tests/format/junctions.py30
-rw-r--r--tests/format/junctions/missing-element/junction-A.bst4
-rw-r--r--tests/format/junctions/missing-element/junctionA/bad-junction-target.bst5
-rw-r--r--tests/format/junctions/missing-element/junctionA/junction-B.bst4
-rw-r--r--tests/format/junctions/missing-element/junctionA/junctionB/project.conf1
-rw-r--r--tests/format/junctions/missing-element/junctionA/project.conf1
-rw-r--r--tests/format/junctions/missing-element/junctionA/target.bst5
-rw-r--r--tests/format/junctions/missing-element/project.conf1
-rw-r--r--tests/format/junctions/missing-element/sub-target-bad-junction.bst5
-rw-r--r--tests/format/junctions/missing-element/sub-target.bst5
-rw-r--r--tests/format/junctions/missing-element/target.bst5
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