| ... | ... | @@ -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" |