summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/unit/test_gerrit.py40
-rw-r--r--zuul/driver/gerrit/gerritconnection.py3
2 files changed, 42 insertions, 1 deletions
diff --git a/tests/unit/test_gerrit.py b/tests/unit/test_gerrit.py
index 7c328b09d..567a35f10 100644
--- a/tests/unit/test_gerrit.py
+++ b/tests/unit/test_gerrit.py
@@ -381,6 +381,46 @@ class TestChecksApi(ZuulTestCase):
self.assertEqual(len(A.checks_history), 3)
self.assertEqual(A.data['status'], 'NEW')
+ @simple_layout('layouts/gerrit-checks.yaml')
+ def test_config_error(self):
+ # Test that line comments are reported on config errors
+ in_repo_conf = textwrap.dedent(
+ """
+ - project:
+ check:
+ jobs:
+ - bad-job
+ """)
+ file_dict = {'.zuul.yaml': in_repo_conf}
+ A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A',
+ files=file_dict)
+ A.setCheck('zuul:check', reset=True)
+ self.waitForPoll('gerrit')
+ self.waitUntilSettled()
+
+ self.assertEqual(A.checks_history[0]['zuul:check']['state'],
+ 'NOT_STARTED')
+ self.assertEqual(A.checks_history[1]['zuul:check']['state'],
+ 'SCHEDULED')
+ self.assertEqual(A.checks_history[2]['zuul:check']['state'],
+ 'FAILED')
+ self.assertEqual(len(A.checks_history), 3)
+ comments = sorted(A.comments, key=lambda x: x['line'])
+ self.assertEqual(comments[0],
+ {'file': '.zuul.yaml',
+ 'line': 5,
+ 'message': 'Job bad-job not defined',
+ 'range': {'end_character': 0,
+ 'end_line': 5,
+ 'start_character': 2,
+ 'start_line': 2},
+ 'reviewer': {'email': 'zuul@example.com',
+ 'name': 'Zuul',
+ 'username': 'jenkins'}}
+ )
+ self.assertEqual(A.reported, 0, "no messages should be reported")
+ self.assertEqual(A.messages, [], "no messages should be reported")
+
class TestPolling(ZuulTestCase):
config_file = 'zuul-gerrit-no-stream.conf'
diff --git a/zuul/driver/gerrit/gerritconnection.py b/zuul/driver/gerrit/gerritconnection.py
index 844d23f56..bd2812dd9 100644
--- a/zuul/driver/gerrit/gerritconnection.py
+++ b/zuul/driver/gerrit/gerritconnection.py
@@ -1100,7 +1100,8 @@ class GerritConnection(BaseConnection):
change.id)
if checks_api:
self.report_checks(log, item, changeid, checks_api)
- if (message or data.get('labels') or data.get('comments')):
+ if (message or data.get('labels') or data.get('comments')
+ or data.get('robot_comments')):
for x in range(1, 4):
try:
self.post('changes/%s/revisions/%s/review' %