Fix cloner test

The cloner test was incorrectly asserting that project2 should
always be at the commit specified for change B.  However, when
testing change A, project2's repo should be at master.

The cloner actually works as intended, the reason the assertion
passed is that the cloner was being run _after_ the gate jobs
finished, meaning that the master branch of project2 actually
was the commit specified for change B -- because it had merged.

Correct this by moving the build release to the end of the test,
so that the test operates entirely within the time that the jobs
are building (before anything merges).  Change the checks that
the commits are correct so that they assert the different and
correct values for each of the builds being tested.

Additionally, remove some unecessary actions from the test (adding
additional patchsets and specifying a clone map that is not used).

Change-Id: I7575e8b84925115393cef81d6b02a3532913ffed
This commit is contained in:
James E. Blair 2014-08-21 11:05:32 -07:00
parent 1d1df74c48
commit 823189201f
1 changed files with 17 additions and 26 deletions

View File

@ -50,12 +50,6 @@ class TestCloner(ZuulTestCase):
A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A')
B = self.fake_gerrit.addFakeChange('org/project2', 'master', 'B')
A.addPatchset(['project_one.txt'])
B.addPatchset(['project_two.txt'])
self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(1))
A.addApproval('CRVW', 2)
B.addApproval('CRVW', 2)
self.fake_gerrit.addEvent(A.addApproval('APRV', 1))
@ -65,39 +59,36 @@ class TestCloner(ZuulTestCase):
self.assertEquals(2, len(self.builds), "Two builds are running")
a_zuul_ref = b_zuul_ref = None
for build in self.builds:
self.log.debug("Build parameters: %s", build.parameters)
if build.parameters['ZUUL_CHANGE'] == '1':
a_zuul_ref = build.parameters['ZUUL_REF']
a_zuul_commit = build.parameters['ZUUL_COMMIT']
if build.parameters['ZUUL_CHANGE'] == '2':
b_zuul_ref = build.parameters['ZUUL_REF']
b_zuul_commit = build.parameters['ZUUL_COMMIT']
self.worker.hold_jobs_in_build = False
self.worker.release()
self.waitUntilSettled()
# Repos setup, now test the cloner
for zuul_ref in [a_zuul_ref, b_zuul_ref]:
change_number = int(build.parameters['ZUUL_CHANGE'])
cloner = zuul.lib.cloner.Cloner(
git_base_url=self.upstream_root,
projects=['org/project1', 'org/project2'],
workspace=self.workspace_root,
zuul_branch='master',
zuul_ref=zuul_ref,
zuul_ref=build.parameters['ZUUL_REF'],
zuul_url=self.git_root,
branch='master',
clone_map_file=os.path.join(FIXTURE_DIR, 'clonemap.yaml')
)
cloner.execute()
work_repo1 = git.Repo(os.path.join(self.workspace_root,
'org/project1'))
self.assertEquals(a_zuul_commit, str(work_repo1.commit('HEAD')))
work_repo2 = git.Repo(os.path.join(self.workspace_root,
'org/project2'))
self.assertEquals(b_zuul_commit, str(work_repo2.commit('HEAD')))
if change_number >= 1:
self.assertEquals(
self.builds[0].parameters['ZUUL_COMMIT'],
str(work_repo1.commit('HEAD')))
if change_number >= 2:
self.assertEquals(
self.builds[1].parameters['ZUUL_COMMIT'],
str(work_repo2.commit('HEAD')))
else:
self.assertEquals(str(work_repo2.commit('master')),
str(work_repo2.commit('HEAD')))
shutil.rmtree(self.workspace_root)
self.worker.hold_jobs_in_build = False
self.worker.release()
self.waitUntilSettled()