diff options
Diffstat (limited to 'tests/test_cloner.py')
-rw-r--r-- | tests/test_cloner.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/test_cloner.py b/tests/test_cloner.py index 166c48666..ab2683d81 100644 --- a/tests/test_cloner.py +++ b/tests/test_cloner.py @@ -59,6 +59,64 @@ class TestCloner(ZuulTestCase): os.path.join(self.upstream_root, project)) return repos + def test_cache_dir(self): + projects = ['org/project1', 'org/project2'] + cache_root = os.path.join(self.test_root, "cache") + for project in projects: + upstream_repo_path = os.path.join(self.upstream_root, project) + cache_repo_path = os.path.join(cache_root, project) + git.Repo.clone_from(upstream_repo_path, cache_repo_path) + + self.worker.hold_jobs_in_build = True + A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A') + A.addApproval('CRVW', 2) + self.fake_gerrit.addEvent(A.addApproval('APRV', 1)) + + self.waitUntilSettled() + + self.assertEquals(1, len(self.builds), "One build is running") + + B = self.fake_gerrit.addFakeChange('org/project2', 'master', 'B') + B.setMerged() + + upstream = self.getUpstreamRepos(projects) + states = [ + {'org/project1': self.builds[0].parameters['ZUUL_COMMIT'], + 'org/project2': str(upstream['org/project2'].commit('master')), + }, + ] + + for number, build in enumerate(self.builds): + self.log.debug("Build parameters: %s", build.parameters) + cloner = zuul.lib.cloner.Cloner( + git_base_url=self.upstream_root, + projects=projects, + workspace=self.workspace_root, + zuul_branch=build.parameters['ZUUL_BRANCH'], + zuul_ref=build.parameters['ZUUL_REF'], + zuul_url=self.git_root, + cache_dir=cache_root, + ) + cloner.execute() + work = self.getWorkspaceRepos(projects) + state = states[number] + + for project in projects: + self.assertEquals(state[project], + str(work[project].commit('HEAD')), + 'Project %s commit for build %s should ' + 'be correct' % (project, number)) + + work = self.getWorkspaceRepos(projects) + upstream_repo_path = os.path.join(self.upstream_root, 'org/project1') + self.assertEquals(work['org/project1'].remotes.origin.url, + upstream_repo_path, + 'workspace repo origin should be upstream, not cache') + + self.worker.hold_jobs_in_build = False + self.worker.release() + self.waitUntilSettled() + def test_one_branch(self): self.worker.hold_jobs_in_build = True |