Merge "Add job tags"
diff --git a/requirements.txt b/requirements.txt
index 01fd245..8388f0b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,5 @@
pbr>=1.1.0
-argparse
PyYAML>=3.1.0
Paste
WebOb>=1.2.3
diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py
index 744a7f9..a67c62d 100755
--- a/tests/test_scheduler.py
+++ b/tests/test_scheduler.py
@@ -3496,6 +3496,31 @@
self.assertEqual('The merge failed! For more information...',
self.smtp_messages[0]['body'])
+ def test_default_merge_failure_reports(self):
+ """Check that the default merge failure reports are correct."""
+
+ # A should report success, B should report merge failure.
+ A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
+ A.addPatchset(['conflict'])
+ B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
+ B.addPatchset(['conflict'])
+ A.addApproval('CRVW', 2)
+ B.addApproval('CRVW', 2)
+ self.fake_gerrit.addEvent(A.addApproval('APRV', 1))
+ self.fake_gerrit.addEvent(B.addApproval('APRV', 1))
+ self.waitUntilSettled()
+
+ self.assertEqual(3, len(self.history)) # A jobs
+ self.assertEqual(A.reported, 2)
+ self.assertEqual(B.reported, 2)
+ self.assertEqual(A.data['status'], 'MERGED')
+ self.assertEqual(B.data['status'], 'NEW')
+ self.assertIn('Build succeeded', A.messages[1])
+ self.assertIn('Merge Failed', B.messages[1])
+ self.assertIn('automatically merged', B.messages[1])
+ self.assertNotIn('logs.example.com', B.messages[1])
+ self.assertNotIn('SKIPPED', B.messages[1])
+
def test_swift_instructions(self):
"Test that the correct swift instructions are sent to the workers"
self.config.set('zuul', 'layout_config',
diff --git a/zuul/lib/cloner.py b/zuul/lib/cloner.py
index 0ac7f0f..257b95d 100644
--- a/zuul/lib/cloner.py
+++ b/zuul/lib/cloner.py
@@ -70,9 +70,10 @@
# Check for a cached git repo first
git_cache = '%s/%s' % (self.cache_dir, project)
git_upstream = '%s/%s' % (self.git_url, project)
+ repo_is_cloned = os.path.exists(os.path.join(dest, '.git'))
if (self.cache_dir and
os.path.exists(git_cache) and
- not os.path.exists(dest)):
+ not repo_is_cloned):
# file:// tells git not to hard-link across repos
git_cache = 'file://%s' % git_cache
self.log.info("Creating repo %s from cache %s",
diff --git a/zuul/reporter/__init__.py b/zuul/reporter/__init__.py
index e29f9a7..fd79174 100644
--- a/zuul/reporter/__init__.py
+++ b/zuul/reporter/__init__.py
@@ -84,6 +84,8 @@
def _formatItemReportFailure(self, pipeline, item):
if item.dequeued_needing_change:
msg = 'This change depends on a change that failed to merge.\n'
+ elif not pipeline.didMergerSucceed(item):
+ msg = pipeline.merge_failure_message
else:
msg = (pipeline.failure_message + '\n\n' +
self._formatItemReportJobs(pipeline, item))