... |
... |
@@ -43,7 +43,8 @@ DATA_DIR = os.path.join( |
43
|
43
|
)
|
44
|
44
|
|
45
|
45
|
|
46
|
|
-def open_workspace(cli, tmpdir, datafiles, kind, track, suffix='', workspace_dir=None, project_path=None):
|
|
46
|
+def open_workspace(cli, tmpdir, datafiles, kind, track, suffix='', workspace_dir=None,
|
|
47
|
+ project_path=None, element_attrs=None):
|
47
|
48
|
if not workspace_dir:
|
48
|
49
|
workspace_dir = os.path.join(str(tmpdir), 'workspace{}'.format(suffix))
|
49
|
50
|
if not project_path:
|
... |
... |
@@ -69,6 +70,8 @@ def open_workspace(cli, tmpdir, datafiles, kind, track, suffix='', workspace_dir |
69
|
70
|
repo.source_config(ref=ref)
|
70
|
71
|
]
|
71
|
72
|
}
|
|
73
|
+ if element_attrs:
|
|
74
|
+ element = {**element, **element_attrs}
|
72
|
75
|
_yaml.dump(element,
|
73
|
76
|
os.path.join(element_path,
|
74
|
77
|
element_name))
|
... |
... |
@@ -854,3 +857,22 @@ def test_cache_key_workspace_in_dependencies(cli, tmpdir, datafiles, strict): |
854
|
857
|
|
855
|
858
|
# Check that the original /usr/bin/hello is not in the checkout
|
856
|
859
|
assert not os.path.exists(os.path.join(checkout, 'usr', 'bin', 'hello'))
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+@pytest.mark.datafiles(DATA_DIR)
|
|
863
|
+def test_multiple_failed_builds(cli, tmpdir, datafiles):
|
|
864
|
+ element_config = {
|
|
865
|
+ "kind": "manual",
|
|
866
|
+ "config": {
|
|
867
|
+ "configure-commands": [
|
|
868
|
+ "unknown_command_that_will_fail"
|
|
869
|
+ ]
|
|
870
|
+ }
|
|
871
|
+ }
|
|
872
|
+ element_name, project, _ = open_workspace(cli, tmpdir, datafiles,
|
|
873
|
+ "git", False, element_attrs=element_config)
|
|
874
|
+
|
|
875
|
+ for _ in range(2):
|
|
876
|
+ result = cli.run(project=project, args=["build", element_name])
|
|
877
|
+ assert "BUG" not in result.stderr
|
|
878
|
+ assert cli.get_element_state(project, element_name) != "cached"
|