Merge "Add more files tests to Pagure driver"
This commit is contained in:
commit
0d1e2302d7
|
@ -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])
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Reference in New Issue