summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorFabien Boucher <fboucher@redhat.com>2019-09-09 17:32:01 +0200
committerFabien Boucher <fboucher@redhat.com>2019-09-18 11:50:26 +0200
commitae42bbe73576d696de710370701c3a1c138d981b (patch)
treef30dd5ccdc8073cbbf7b936e7fb6101b6c53dcd5 /tests
parent3c2b5c6ed2dd772d4d9e11d291abdf7710356867 (diff)
downloadzuul-ae42bbe73576d696de710370701c3a1c138d981b.tar.gz
Pagure - handle Pull Request tags (labels) metadata
This change implements event handling for pull-request.tags.added. Tags can be used as trigger event filter or required metadata. Change-Id: I128bbef34245932e3bbee1f848ad1c484d3ccae3
Diffstat (limited to 'tests')
-rw-r--r--tests/base.py25
-rw-r--r--tests/fixtures/layouts/requirements-pagure.yaml40
-rw-r--r--tests/unit/test_pagure_driver.py46
3 files changed, 108 insertions, 3 deletions
diff --git a/tests/base.py b/tests/base.py
index 01b8da1ac..875bb82e6 100644
--- a/tests/base.py
+++ b/tests/base.py
@@ -827,6 +827,7 @@ class FakePagurePullRequest(object):
self.comments = []
self.flags = []
self.files = {}
+ self.tags = []
self.cached_merge_status = ''
self.threshold_reached = False
self.commit_stop = None
@@ -841,16 +842,17 @@ class FakePagurePullRequest(object):
self._addCommitInPR(files=files)
self._updateTimeStamp()
- def _getPullRequestEvent(self, action):
+ def _getPullRequestEvent(self, action, pull_data_field='pullrequest'):
name = 'pg_pull_request'
data = {
'msg': {
- 'pullrequest': {
+ pull_data_field: {
'branch': self.branch,
'comments': self.comments,
'commit_start': self.commit_start,
'commit_stop': self.commit_stop,
'date_created': '0',
+ 'tags': self.tags,
'initial_comment': self.initial_comment,
'id': self.number,
'project': {
@@ -867,6 +869,8 @@ class FakePagurePullRequest(object):
}
if action == 'pull-request.flag.added':
data['msg']['flag'] = self.flags[0]
+ if action == 'pull-request.tag.added':
+ data['msg']['tags'] = self.tags
return (name, data)
def getPullRequestOpenedEvent(self):
@@ -888,6 +892,20 @@ class FakePagurePullRequest(object):
self._updateTimeStamp()
return self._getPullRequestEvent('pull-request.initial_comment.edited')
+ def getPullRequestTagAddedEvent(self, tags, reset=True):
+ if reset:
+ self.tags = []
+ _tags = set(self.tags)
+ _tags.update(set(tags))
+ self.tags = list(_tags)
+ self.addComment(
+ "**Metadata Update from @pingou**:\n- " +
+ "Pull-request tagged with: %s" % ', '.join(tags),
+ True)
+ self._updateTimeStamp()
+ return self._getPullRequestEvent(
+ 'pull-request.tag.added', pull_data_field='pull_request')
+
def getPullRequestStatusSetEvent(self, status):
self.addFlag(
status, "https://url", "Build %s" % status)
@@ -1014,7 +1032,8 @@ class FakePagureAPIClient(pagureconnection.PagureAPIClient):
'comments': pr.comments,
'commit_stop': pr.commit_stop,
'threshold_reached': pr.threshold_reached,
- 'cached_merge_status': pr.cached_merge_status
+ 'cached_merge_status': pr.cached_merge_status,
+ 'tags': pr.tags,
}, 200, "", "GET"
match = re.match(r'.+/api/0/(.+)/pull-request/(\d+)/flag$', url)
diff --git a/tests/fixtures/layouts/requirements-pagure.yaml b/tests/fixtures/layouts/requirements-pagure.yaml
index 47ca6c135..36f785f30 100644
--- a/tests/fixtures/layouts/requirements-pagure.yaml
+++ b/tests/fixtures/layouts/requirements-pagure.yaml
@@ -38,6 +38,34 @@
pagure:
status: 'success'
+- pipeline:
+ name: trigger-tag
+ manager: independent
+ trigger:
+ pagure:
+ - event: pg_pull_request
+ action: tagged
+ tag:
+ - gateit
+ - mergeit
+ success:
+ pagure:
+ status: 'success'
+
+- pipeline:
+ name: require-tag
+ manager: independent
+ require:
+ pagure:
+ tags: gateit
+ trigger:
+ pagure:
+ - event: pg_pull_request
+ action: changed
+ success:
+ pagure:
+ status: 'success'
+
- job:
name: base
parent: null
@@ -64,3 +92,15 @@
trigger-flag:
jobs:
- project-test
+
+- project:
+ name: org/project4
+ trigger-tag:
+ jobs:
+ - project-test
+
+- project:
+ name: org/project5
+ require-tag:
+ jobs:
+ - project-test \ No newline at end of file
diff --git a/tests/unit/test_pagure_driver.py b/tests/unit/test_pagure_driver.py
index 4643b8620..3f023beea 100644
--- a/tests/unit/test_pagure_driver.py
+++ b/tests/unit/test_pagure_driver.py
@@ -360,6 +360,52 @@ class TestPagureDriver(ZuulTestCase):
self.waitUntilSettled()
self.assertEqual(1, len(self.history))
+ @simple_layout('layouts/requirements-pagure.yaml', driver='pagure')
+ def test_tag_trigger(self):
+
+ A = self.fake_pagure.openFakePullRequest(
+ 'org/project4', 'master', 'A')
+
+ self.fake_pagure.emitEvent(
+ A.getPullRequestTagAddedEvent(["lambda"]))
+ self.waitUntilSettled()
+ self.assertEqual(0, len(self.history))
+
+ self.fake_pagure.emitEvent(
+ A.getPullRequestTagAddedEvent(["gateit", "lambda"]))
+ self.waitUntilSettled()
+ self.assertEqual(1, len(self.history))
+
+ self.fake_pagure.emitEvent(
+ A.getPullRequestTagAddedEvent(["mergeit"]))
+ self.waitUntilSettled()
+ self.assertEqual(2, len(self.history))
+
+ @simple_layout('layouts/requirements-pagure.yaml', driver='pagure')
+ def test_tag_require(self):
+
+ A = self.fake_pagure.openFakePullRequest(
+ 'org/project5', 'master', 'A')
+
+ self.fake_pagure.emitEvent(A.getPullRequestUpdatedEvent())
+ self.waitUntilSettled()
+ self.assertEqual(0, len(self.history))
+
+ A.tags = ["lambda"]
+ self.fake_pagure.emitEvent(A.getPullRequestUpdatedEvent())
+ self.waitUntilSettled()
+ self.assertEqual(0, len(self.history))
+
+ A.tags = ["lambda", "gateit"]
+ self.fake_pagure.emitEvent(A.getPullRequestUpdatedEvent())
+ self.waitUntilSettled()
+ self.assertEqual(1, len(self.history))
+
+ A.tags = []
+ self.fake_pagure.emitEvent(A.getPullRequestUpdatedEvent())
+ self.waitUntilSettled()
+ self.assertEqual(1, len(self.history))
+
@simple_layout('layouts/merging-pagure.yaml', driver='pagure')
def test_merge_action_in_independent(self):