summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buildstream/element.py3
-rw-r--r--tests/sourcecache/push.py2
2 files changed, 3 insertions, 2 deletions
diff --git a/src/buildstream/element.py b/src/buildstream/element.py
index ffce257bf..134ca3024 100644
--- a/src/buildstream/element.py
+++ b/src/buildstream/element.py
@@ -1846,7 +1846,8 @@ class Element(Plugin):
return True
def _skip_source_push(self):
- if not self.__sources or self._get_workspace():
+ # Skip push if we have no sources, are workspaced or the given element failed to build
+ if any([not self.__sources, self._get_workspace(), not self._get_build_result()[0]]):
return True
return not (self.__sourcecache.has_push_remotes(plugin=self) and self._source_cached())
diff --git a/tests/sourcecache/push.py b/tests/sourcecache/push.py
index 719860425..551593e18 100644
--- a/tests/sourcecache/push.py
+++ b/tests/sourcecache/push.py
@@ -254,5 +254,5 @@ def test_source_push_build_fail(cli, tmpdir, datafiles):
res.assert_task_error(ErrorDomain.ELEMENT, None)
# Sources are not pushed as the build queue is before the source push
- # queue.
+ # queue. We explicitly don't want to push failed build source by default.
assert "Pushed source " not in res.stderr