summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhillip Smyth <phillip.smyth@codethink.co.uk>2018-09-19 08:48:51 +0000
committerPhillip Smyth <phillip.smyth@codethink.co.uk>2018-09-19 08:48:51 +0000
commit72b5902157316e173de2eec5b3a2772283eec3c7 (patch)
treed9c3d3188ce1e1b904f4ffd7bd9c10ac68ab9784
parentd8450166db2dc72e43018a48e2cbc6f546af05f8 (diff)
parent89a16e176aed61b1a0af325f5daef25e5b7760eb (diff)
downloadbuildstream-72b5902157316e173de2eec5b3a2772283eec3c7.tar.gz
Merge branch 'issue-642-Invalid_project.conf_seen_as_missing' into 'master'
Incorrect error when malformed project.conf Closes #642 See merge request BuildStream/buildstream!792
-rw-r--r--buildstream/_project.py5
-rw-r--r--tests/format/project.py7
-rw-r--r--tests/format/project/invalid-yaml/manual.bst1
-rw-r--r--tests/format/project/invalid-yaml/project.conf8
4 files changed, 20 insertions, 1 deletions
diff --git a/buildstream/_project.py b/buildstream/_project.py
index 03a783e48..b72318af9 100644
--- a/buildstream/_project.py
+++ b/buildstream/_project.py
@@ -385,7 +385,10 @@ class Project():
self._project_conf = _yaml.load(projectfile)
except LoadError as e:
# Raise a more specific error here
- raise LoadError(LoadErrorReason.MISSING_PROJECT_CONF, str(e))
+ if e.reason == LoadErrorReason.MISSING_FILE:
+ raise LoadError(LoadErrorReason.MISSING_PROJECT_CONF, str(e)) from e
+ else:
+ raise
pre_config_node = _yaml.node_copy(self._default_config_node)
_yaml.composite(pre_config_node, self._project_conf)
diff --git a/tests/format/project.py b/tests/format/project.py
index df1a2364b..214592811 100644
--- a/tests/format/project.py
+++ b/tests/format/project.py
@@ -41,6 +41,13 @@ def test_invalid_project_name(cli, datafiles):
@pytest.mark.datafiles(os.path.join(DATA_DIR))
+def test_invalid_yaml(cli, datafiles):
+ project = os.path.join(datafiles.dirname, datafiles.basename, "invalid-yaml")
+ result = cli.run(project=project, args=['workspace', 'list'])
+ result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.INVALID_YAML)
+
+
+@pytest.mark.datafiles(os.path.join(DATA_DIR))
def test_load_default_project(cli, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename, "default")
result = cli.run(project=project, args=[
diff --git a/tests/format/project/invalid-yaml/manual.bst b/tests/format/project/invalid-yaml/manual.bst
new file mode 100644
index 000000000..4d7f70266
--- /dev/null
+++ b/tests/format/project/invalid-yaml/manual.bst
@@ -0,0 +1 @@
+kind: manual
diff --git a/tests/format/project/invalid-yaml/project.conf b/tests/format/project/invalid-yaml/project.conf
new file mode 100644
index 000000000..5f9282bbf
--- /dev/null
+++ b/tests/format/project/invalid-yaml/project.conf
@@ -0,0 +1,8 @@
+# Basic project configuration that doesnt override anything
+#
+
+name: pony
+
+variables:
+ sbindir: "%{bindir}
+