diff options
author | Phillip Smyth <phillip.smyth@codethink.co.uk> | 2018-09-19 08:48:51 +0000 |
---|---|---|
committer | Phillip Smyth <phillip.smyth@codethink.co.uk> | 2018-09-19 08:48:51 +0000 |
commit | 72b5902157316e173de2eec5b3a2772283eec3c7 (patch) | |
tree | d9c3d3188ce1e1b904f4ffd7bd9c10ac68ab9784 | |
parent | d8450166db2dc72e43018a48e2cbc6f546af05f8 (diff) | |
parent | 89a16e176aed61b1a0af325f5daef25e5b7760eb (diff) | |
download | buildstream-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.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 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} + |