Tristan Van Berkom pushed to branch master at BuildStream / buildstream
Commits:
-
2215859c
by Valentin David at 2018-08-23T06:40:19Z
-
e37ac3bc
by Tristan Van Berkom at 2018-08-23T07:45:49Z
2 changed files:
Changes:
... | ... | @@ -355,10 +355,14 @@ class Pipeline(): |
355 | 355 |
#
|
356 | 356 |
def assert_consistent(self, elements):
|
357 | 357 |
inconsistent = []
|
358 |
+ inconsistent_workspaced = []
|
|
358 | 359 |
with self._context.timed_activity("Checking sources"):
|
359 | 360 |
for element in elements:
|
360 | 361 |
if element._get_consistency() == Consistency.INCONSISTENT:
|
361 |
- inconsistent.append(element)
|
|
362 |
+ if element._get_workspace():
|
|
363 |
+ inconsistent_workspaced.append(element)
|
|
364 |
+ else:
|
|
365 |
+ inconsistent.append(element)
|
|
362 | 366 |
|
363 | 367 |
if inconsistent:
|
364 | 368 |
detail = "Exact versions are missing for the following elements:\n\n"
|
... | ... | @@ -372,6 +376,13 @@ class Pipeline(): |
372 | 376 |
|
373 | 377 |
raise PipelineError("Inconsistent pipeline", detail=detail, reason="inconsistent-pipeline")
|
374 | 378 |
|
379 |
+ if inconsistent_workspaced:
|
|
380 |
+ detail = "Some workspaces do not exist but are not closed\n" + \
|
|
381 |
+ "Try closing them with `bst workspace close`\n\n"
|
|
382 |
+ for element in inconsistent_workspaced:
|
|
383 |
+ detail += " " + element._get_full_name() + "\n"
|
|
384 |
+ raise PipelineError("Inconsistent pipeline", detail=detail, reason="inconsistent-pipeline-workspaced")
|
|
385 |
+ |
|
375 | 386 |
#############################################################
|
376 | 387 |
# Private Methods #
|
377 | 388 |
#############################################################
|
... | ... | @@ -767,3 +767,16 @@ def test_list_supported_workspace(cli, tmpdir, datafiles, workspace_cfg, expecte |
767 | 767 |
# Check that workspace config is converted correctly if necessary
|
768 | 768 |
loaded_config = _yaml.node_sanitize(_yaml.load(workspace_config_path))
|
769 | 769 |
assert loaded_config == parse_dict_as_yaml(expected)
|
770 |
+ |
|
771 |
+ |
|
772 |
+@pytest.mark.datafiles(DATA_DIR)
|
|
773 |
+@pytest.mark.parametrize("kind", repo_kinds)
|
|
774 |
+def test_inconsitent_pipeline_message(cli, tmpdir, datafiles, kind):
|
|
775 |
+ element_name, project, workspace = open_workspace(cli, tmpdir, datafiles, kind, False)
|
|
776 |
+ |
|
777 |
+ shutil.rmtree(workspace)
|
|
778 |
+ |
|
779 |
+ result = cli.run(project=project, args=[
|
|
780 |
+ 'build', element_name
|
|
781 |
+ ])
|
|
782 |
+ result.assert_main_error(ErrorDomain.PIPELINE, "inconsistent-pipeline-workspaced")
|