Merge "Add more files tests to Pagure driver"

This commit is contained in:
Zuul 2022-04-28 21:46:40 +00:00 committed by Gerrit Code Review
commit 0d1e2302d7
3 changed files with 52 additions and 6 deletions

View File

@ -1680,9 +1680,9 @@ class FakePagurePullRequest(object):
return PagureChangeReference.create(
repo, self.getPRReference(), 'refs/tags/init')
def addCommit(self, files={}):
def addCommit(self, files={}, delete_files=None):
"""Adds a commit on top of the actual PR head."""
self._addCommitInPR(files=files)
self._addCommitInPR(files=files, delete_files=delete_files)
self._updateTimeStamp()
def forcePush(self, files={}):
@ -1690,7 +1690,7 @@ class FakePagurePullRequest(object):
self._addCommitInPR(files=files, reset=True)
self._updateTimeStamp()
def _addCommitInPR(self, files={}, reset=False):
def _addCommitInPR(self, files={}, delete_files=None, reset=False):
repo = self._getRepo()
ref = repo.references[self.getPRReference()]
if reset:
@ -1702,7 +1702,7 @@ class FakePagurePullRequest(object):
if files:
self.files = files
else:
elif not delete_files:
fn = '%s-%s' % (self.branch.replace('/', '_'), self.number)
self.files = {fn: "test %s %s\n" % (self.branch, self.number)}
msg = self.subject + '-' + str(self.number_of_commits)
@ -1712,6 +1712,13 @@ class FakePagurePullRequest(object):
f.write(content)
repo.index.add([fn])
if delete_files:
for fn in delete_files:
if fn in self.files:
del self.files[fn]
fn = os.path.join(repo.working_dir, fn)
repo.index.remove([fn])
self.commit_stop = repo.index.commit(msg).hexsha
if not self.commit_start:
self.commit_start = self.commit_stop
@ -2158,7 +2165,7 @@ class FakeGitlabMergeRequest(object):
if files:
self.files = files
else:
elif not delete_files:
fn = '%s-%s' % (self.branch.replace('/', '_'), self.number)
self.files = {fn: "test %s %s\n" % (self.branch, self.number)}
msg = self.subject + '-' + str(self.number_of_commits)
@ -2170,6 +2177,8 @@ class FakeGitlabMergeRequest(object):
if delete_files:
for fn in delete_files:
if fn in self.files:
del self.files[fn]
fn = os.path.join(repo.working_dir, fn)
repo.index.remove([fn])
@ -2517,7 +2526,7 @@ class FakeGithubPullRequest(object):
else:
normalized_files[tests.fakegithub.FakeFile(fn)] = content
self.files.update(normalized_files)
else:
elif not delete_files:
fn = '%s-%s' % (self.branch.replace('/', '_'), self.number)
content = f"test {self.branch} {self.number}\n"
self.files.update({tests.fakegithub.FakeFile(fn): content})
@ -2531,6 +2540,8 @@ class FakeGithubPullRequest(object):
if delete_files:
for fn in delete_files:
if fn in self.files:
del self.files[fn]
fn = os.path.join(repo.working_dir, fn)
repo.index.remove([fn])

View File

@ -17,8 +17,15 @@
- .*-requires
run: playbooks/project-test1.yaml
- job:
name: project-test2
files:
- .*-removed
run: playbooks/project-test1.yaml
- project:
name: org/project
check:
jobs:
- project-test1
- project-test2

View File

@ -656,6 +656,34 @@ class TestPagureDriver(ZuulTestCase):
self.assertTrue(A.is_merged)
self.assertTrue(B.is_merged)
@simple_layout('layouts/files-pagure.yaml', driver='pagure')
def test_changed_file_match_filter(self):
files = {'{:03d}.txt'.format(n): 'test' for n in range(300)}
files["foobar-requires"] = "test"
files["to-be-removed"] = "test"
A = self.fake_pagure.openFakePullRequest(
'org/project', 'master', 'A', files=files)
self.fake_pagure.emitEvent(A.getPullRequestOpenedEvent())
self.waitUntilSettled()
# project-test1 and project-test2 should be run
self.assertEqual(2, len(self.history))
@simple_layout('layouts/files-pagure.yaml', driver='pagure')
def test_changed_and_reverted_file_not_match_filter(self):
files = {'{:03d}.txt'.format(n): 'test' for n in range(3)}
files["foobar-requires"] = "test"
files["to-be-removed"] = "test"
A = self.fake_pagure.openFakePullRequest(
'org/project', 'master', 'A', files=files)
A.addCommit(delete_files=['to-be-removed'])
self.fake_pagure.emitEvent(A.getPullRequestOpenedEvent())
self.waitUntilSettled()
# Only project-test1 should be run, because the file to-be-removed
# is reverted and not in changed files to trigger project-test2
self.assertEqual(1, len(self.history))
class TestPagureToGerritCRD(ZuulTestCase):
config_file = 'zuul-crd-pagure.conf'