diff --git a/tests/base.py b/tests/base.py index cd8c0c7802..4a4e536a33 100644 --- a/tests/base.py +++ b/tests/base.py @@ -638,8 +638,11 @@ class FakeGerritChange(object): path = os.path.join(self.upstream_root, self.project) repo = git.Repo(path) - repo.heads[self.branch].commit = \ - repo.commit(self.patchsets[-1]['revision']) + + repo.head.reference = self.branch + zuul.merger.merger.reset_repo_to_head(repo) + repo.git.merge('-s', 'resolve', self.patchsets[-1]['ref']) + repo.heads[self.branch].commit = repo.head.commit def setReported(self): self.reported += 1 diff --git a/tests/fixtures/config/zuultrigger/project-change-merged/git/common-config/zuul.yaml b/tests/fixtures/config/zuultrigger/project-change-merged/git/common-config/zuul.yaml index 045e0a9887..77a96c25b8 100644 --- a/tests/fixtures/config/zuultrigger/project-change-merged/git/common-config/zuul.yaml +++ b/tests/fixtures/config/zuultrigger/project-change-merged/git/common-config/zuul.yaml @@ -36,6 +36,10 @@ name: merge-check manager: independent ignore-dependencies: true + reject: + gerrit: + approval: + - Verified: -1 trigger: zuul: - event: project-change-merged diff --git a/tests/unit/test_serial.py b/tests/unit/test_serial.py index 458d860dbd..f91bb4eda0 100644 --- a/tests/unit/test_serial.py +++ b/tests/unit/test_serial.py @@ -26,14 +26,7 @@ class TestSerial(ZuulTestCase): A.setMerged() self.fake_gerrit.addEvent(A.getChangeMergedEvent()) self.waitUntilSettled() - # The gerrit upstream repo simulation isn't perfect -- when - # change A is merged above, the master ref is updated to point - # to that change, it doesn't actually "merge" it. The same is - # true for B, so if it didn't have A in its git history, then - # A would not appear in the jobs run for B. We simulate the - # correct situation by setting A as the git parent of B. - B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B', - parent='refs/changes/1/1/1') + B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B') B.setMerged() self.fake_gerrit.addEvent(B.getChangeMergedEvent()) self.waitUntilSettled() diff --git a/tests/unit/test_zuultrigger.py b/tests/unit/test_zuultrigger.py index 80cb7387cc..aeda124332 100644 --- a/tests/unit/test_zuultrigger.py +++ b/tests/unit/test_zuultrigger.py @@ -220,6 +220,12 @@ class TestZuulTriggerProjectChangeMerged(ZuulTestCase): self.assertTrue("project:{org/project} status:open" in self.fake_gerrit.queries) + # Ensure the gerrit driver has updated its cache after the + # previous comments were left: + self.fake_gerrit.addEvent(A.getChangeCommentEvent(2)) + self.fake_gerrit.addEvent(B.getChangeCommentEvent(2)) + self.waitUntilSettled() + # Reconfigure and run the test again. This is a regression # check to make sure that we don't end up with a stale trigger # cache that has references to projects from the old