Merge "Add test of topic dependencies with an abandoned change"
This commit is contained in:
commit
b346aa80b1
@ -659,6 +659,11 @@ class FakeGerritChange(object):
|
||||
def setReported(self):
|
||||
self.reported += 1
|
||||
|
||||
def setAbandoned(self):
|
||||
self.data['status'] = 'ABANDONED'
|
||||
self.data['open'] = False
|
||||
self.open = False
|
||||
|
||||
|
||||
class FakeGerritPoller(gerritconnection.GerritChecksPoller):
|
||||
"""A Fake Gerrit poller for use in tests.
|
||||
@ -1171,7 +1176,8 @@ class FakeGerritConnection(gerritconnection.GerritConnection):
|
||||
if not self._fake_submit_whole_topic:
|
||||
topic = None
|
||||
if topic:
|
||||
results = self._simpleQuery(f'topic:{topic}', http=True)
|
||||
results = self._simpleQuery(f'status:open topic:{topic}',
|
||||
http=True)
|
||||
else:
|
||||
results = [change.queryHTTP(internal=True)]
|
||||
for dep in change.data.get('dependsOn', []):
|
||||
@ -1179,6 +1185,8 @@ class FakeGerritConnection(gerritconnection.GerritConnection):
|
||||
r = dep_change.queryHTTP(internal=True)
|
||||
if r['status'] == 'MERGED':
|
||||
continue
|
||||
if not dep_change.open:
|
||||
continue
|
||||
if r not in results:
|
||||
results.append(r)
|
||||
if len(results) == 1:
|
||||
@ -1272,6 +1280,17 @@ class FakeGerritConnection(gerritconnection.GerritConnection):
|
||||
if 'topic' in change.data
|
||||
and topic in change.data['topic']
|
||||
]
|
||||
if part.startswith('status:'):
|
||||
status = part[len('status:'):].strip().strip('"\'').lower()
|
||||
if status == 'open':
|
||||
l = [
|
||||
change for change in l if change.open
|
||||
]
|
||||
else:
|
||||
l = [
|
||||
change for change in l
|
||||
if change.data['status'].lower() == status
|
||||
]
|
||||
l = [queryMethod(change) for change in l]
|
||||
return l
|
||||
|
||||
|
@ -4180,6 +4180,38 @@ class TestGerritCircularDependencies(ZuulTestCase):
|
||||
self.assertIn("/2 (config error)", A.messages[-1])
|
||||
self.assertIn("/2 (config error)", B.messages[-1])
|
||||
|
||||
@gerrit_config(submit_whole_topic=True)
|
||||
def test_abandoned_change(self):
|
||||
# Test that we can re-enqueue a topic cycle after abandoning a
|
||||
# change (out of band).
|
||||
A = self.fake_gerrit.addFakeChange('org/project1', "master", "A",
|
||||
topic='test-topic')
|
||||
B = self.fake_gerrit.addFakeChange('org/project2', "master", "B",
|
||||
topic='test-topic',
|
||||
files={'conflict': 'B'})
|
||||
X = self.fake_gerrit.addFakeChange('org/project2', "master", "X",
|
||||
topic='test-topic',
|
||||
files={'conflict': 'X'})
|
||||
|
||||
A.addApproval("Code-Review", 2)
|
||||
B.addApproval("Code-Review", 2)
|
||||
X.addApproval("Code-Review", 2)
|
||||
X.addApproval("Approved", 1)
|
||||
B.addApproval("Approved", 1)
|
||||
self.fake_gerrit.addEvent(A.addApproval("Approved", 1))
|
||||
self.waitUntilSettled()
|
||||
|
||||
X.setAbandoned()
|
||||
self.waitUntilSettled("abandoned")
|
||||
|
||||
self.log.debug("add reapproval")
|
||||
self.fake_gerrit.addEvent(A.addApproval("Approved", 1))
|
||||
self.waitUntilSettled("reapproved")
|
||||
|
||||
self.assertEqual(A.data["status"], "MERGED")
|
||||
self.assertEqual(B.data["status"], "MERGED")
|
||||
self.assertEqual(X.data["status"], "ABANDONED")
|
||||
|
||||
|
||||
class TestGithubCircularDependencies(ZuulTestCase):
|
||||
config_file = "zuul-gerrit-github.conf"
|
||||
|
Loading…
x
Reference in New Issue
Block a user