diff options
-rw-r--r-- | buildstream/_project.py | 5 | ||||
-rw-r--r-- | tests/format/project.py | 7 | ||||
-rw-r--r-- | tests/format/project/invalid-yaml/manual.bst | 1 | ||||
-rw-r--r-- | tests/format/project/invalid-yaml/project.conf | 8 |
4 files changed, 20 insertions, 1 deletions
diff --git a/buildstream/_project.py b/buildstream/_project.py index 4a3c075e0..c9325174d 100644 --- a/buildstream/_project.py +++ b/buildstream/_project.py @@ -381,7 +381,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 abd0c4238..83fd38489 100644 --- a/tests/format/project.py +++ b/tests/format/project.py @@ -61,6 +61,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} + |