def test_git_branches_unicode(self, checkout_path): repo_path = self.project.repo default_branches = [ # comes from ``make_test_git`` function 'submodule', 'invalidsubmodule', ] branches = [ 'master', 'release-ünîø∂é', ] for branch in branches: create_git_branch(repo_path, branch) # Create dir where to clone the repo local_repo = os.path.join(mkdtemp(), 'local') os.mkdir(local_repo) checkout_path.return_value = local_repo repo = self.project.vcs_repo() repo.clone() self.assertEqual( set(branches + default_branches), {branch.verbose_name for branch in repo.branches}, )
def test_git_branches_unicode(self, checkout_path): repo_path = self.project.repo default_branches = [ # comes from ``make_test_git`` function 'submodule', 'relativesubmodule', 'invalidsubmodule', ] branches = [ 'master', 'release-ünîø∂é', ] for branch in branches: create_git_branch(repo_path, branch) # Create dir where to clone the repo local_repo = os.path.join(mkdtemp(), 'local') os.mkdir(local_repo) checkout_path.return_value = local_repo repo = self.project.vcs_repo() repo.clone() self.assertEqual( set(branches + default_branches), {branch.verbose_name for branch in repo.branches}, )
def test_git_branches(self): repo_path = self.project.repo default_branches = [ # comes from ``make_test_git`` function 'submodule', 'relativesubmodule', 'invalidsubmodule', ] branches = [ 'develop', 'master', '2.0.X', 'release/2.0.0', 'release/foo/bar', 'release-ünîø∂é', ] for branch in branches: create_git_branch(repo_path, branch) repo = self.project.vcs_repo() # We aren't cloning the repo, # so we need to hack the repo path repo.working_dir = repo_path self.assertEqual( set(branches + default_branches), {branch.verbose_name for branch in repo.branches}, )
def test_fetch_clean_tags_and_branches(self, checkout_path): upstream_repo = self.project.repo create_git_tag(upstream_repo, 'v01') create_git_tag(upstream_repo, 'v02') create_git_branch(upstream_repo, 'newbranch') local_repo = os.path.join(mkdtemp(), 'local') os.mkdir(local_repo) checkout_path.return_value = local_repo repo = self.project.vcs_repo() repo.clone() delete_git_tag(upstream_repo, 'v02') delete_git_branch(upstream_repo, 'newbranch') # We still have all branches and tags in the local repo self.assertEqual(set(['v01', 'v02']), set(vcs.verbose_name for vcs in repo.tags)) self.assertEqual( set([ 'invalidsubmodule', 'master', 'submodule', 'newbranch', ]), set(vcs.verbose_name for vcs in repo.branches)) repo.update() # We don't have the eliminated branches and tags in the local repo self.assertEqual(set(['v01']), set(vcs.verbose_name for vcs in repo.tags)) self.assertEqual(set(['invalidsubmodule', 'master', 'submodule']), set(vcs.verbose_name for vcs in repo.branches))
def test_check_duplicate_no_reserved_version(self, api_v2): create_git_branch(self.repo, 'no-reserved') create_git_tag(self.repo, 'no-reserved') version = self.project.versions.get(slug=LATEST) sync_repository = self.get_update_docs_task(version) sync_repository.sync_repo(sync_repository.build_env) api_v2.project().sync_versions.post.assert_called()
def test_check_duplicate_no_reserved_version(self, api_v2): create_git_branch(self.repo, 'no-reserved') create_git_tag(self.repo, 'no-reserved') version = self.project.versions.get(slug=LATEST) sync_repository = tasks.UpdateDocsTaskStep() sync_repository.version = version sync_repository.project = self.project sync_repository.sync_repo() api_v2.project().sync_versions.post.assert_called()
def test_check_duplicate_no_reserved_version(self, api_v2): create_git_branch(self.repo, 'no-reserved') create_git_tag(self.repo, 'no-reserved') version = self.project.versions.get(slug=LATEST) sync_repository = tasks.UpdateDocsTaskStep() sync_repository.version = version sync_repository.project = self.project sync_repository.sync_repo() api_v2.project().sync_versions.post.assert_called()
def test_check_duplicate_reserved_version_stable(self, api_v2): create_git_branch(self.repo, 'stable') create_git_tag(self.repo, 'stable') version = self.project.versions.get(slug=LATEST) sync_repository = tasks.UpdateDocsTaskStep() sync_repository.version = version sync_repository.project = self.project with self.assertRaises(RepositoryError) as e: sync_repository.sync_repo() self.assertEqual(str(e.exception), RepositoryError.DUPLICATED_RESERVED_VERSIONS)
def test_check_duplicate_no_reserved_version(self): create_git_branch(self.repo, 'no-reserved') create_git_tag(self.repo, 'no-reserved') version = self.project.versions.get(slug=LATEST) sync_repository = self.get_update_docs_task(version) self.assertEqual(self.project.versions.filter(slug__startswith='no-reserved').count(), 0) sync_repository.sync_repo(sync_repository.build_env) self.assertEqual(self.project.versions.filter(slug__startswith='no-reserved').count(), 2)
def test_check_duplicate_reserved_version_stable(self, api_v2): create_git_branch(self.repo, 'stable') create_git_tag(self.repo, 'stable') version = self.project.versions.get(slug=LATEST) sync_repository = tasks.UpdateDocsTaskStep() sync_repository.version = version sync_repository.project = self.project with self.assertRaises(RepositoryError) as e: sync_repository.sync_repo() self.assertEqual( str(e.exception), RepositoryError.DUPLICATED_RESERVED_VERSIONS )
def test_check_duplicate_reserved_version_stable(self, checkout_path, api_v2): create_git_branch(self.repo, 'stable') create_git_tag(self.repo, 'stable') # Create dir where to clone the repo local_repo = os.path.join(mkdtemp(), 'local') os.mkdir(local_repo) checkout_path.return_value = local_repo version = self.project.versions.get(slug=LATEST) sync_repository = self.get_update_docs_task(version) with self.assertRaises(RepositoryError) as e: sync_repository.sync_repo(sync_repository.build_env) self.assertEqual( str(e.exception), RepositoryError.DUPLICATED_RESERVED_VERSIONS, )
def test_check_duplicate_reserved_version_latest(self, checkout_path, api_v2): checkout_path.return_value = self.project.repo create_git_branch(self.repo, 'latest') create_git_tag(self.repo, 'latest') version = self.project.versions.get(slug=LATEST) sync_repository = tasks.UpdateDocsTaskStep() sync_repository.version = version sync_repository.project = self.project with self.assertRaises(RepositoryError) as e: sync_repository.sync_repo() self.assertEqual( str(e.exception), RepositoryError.DUPLICATED_RESERVED_VERSIONS ) delete_git_branch(self.repo, 'latest') sync_repository.sync_repo() api_v2.project().sync_versions.post.assert_called()
def test_fetch_clean_tags_and_branches(self, checkout_path): upstream_repo = self.project.repo create_git_tag(upstream_repo, 'v01') create_git_tag(upstream_repo, 'v02') create_git_branch(upstream_repo, 'newbranch') local_repo = os.path.join(mkdtemp(), 'local') os.mkdir(local_repo) checkout_path.return_value = local_repo repo = self.project.vcs_repo() repo.clone() delete_git_tag(upstream_repo, 'v02') delete_git_branch(upstream_repo, 'newbranch') # We still have all branches and tags in the local repo self.assertEqual( {'v01', 'v02'}, {vcs.verbose_name for vcs in repo.tags}, ) self.assertEqual( { 'invalidsubmodule', 'master', 'submodule', 'newbranch', }, {vcs.verbose_name for vcs in repo.branches}, ) repo.update() # We don't have the eliminated branches and tags in the local repo self.assertEqual( {'v01'}, {vcs.verbose_name for vcs in repo.tags}, ) self.assertEqual( { 'invalidsubmodule', 'master', 'submodule', }, {vcs.verbose_name for vcs in repo.branches}, )
def test_git_lsremote(self): repo_path = self.project.repo default_branches = [ # comes from ``make_test_git`` function 'submodule', 'invalidsubmodule', ] branches = [ 'develop', 'master', '2.0.X', 'release/2.0.0', 'release/foo/bar', ] for branch in branches: create_git_branch(repo_path, branch) create_git_tag(repo_path, 'v01') create_git_tag(repo_path, 'v02', annotated=True) create_git_tag(repo_path, 'release-ünîø∂é') repo = self.project.vcs_repo() # create the working dir if it not exists. It's required to ``cwd`` to # execute the command repo.check_working_dir() repo_branches, repo_tags = repo.lsremote self.assertEqual( set(branches + default_branches), {branch.verbose_name for branch in repo_branches}, ) self.assertEqual( {'v01', 'v02', 'release-ünîø∂é'}, {vcs.verbose_name for vcs in repo_tags}, )
def test_check_duplicate_reserved_version_latest(self, checkout_path, api_v2): create_git_branch(self.repo, 'latest') create_git_tag(self.repo, 'latest') # Create dir where to clone the repo local_repo = os.path.join(mkdtemp(), 'local') os.mkdir(local_repo) checkout_path.return_value = local_repo version = self.project.versions.get(slug=LATEST) sync_repository = tasks.UpdateDocsTaskStep() sync_repository.version = version sync_repository.project = self.project with self.assertRaises(RepositoryError) as e: sync_repository.sync_repo() self.assertEqual( str(e.exception), RepositoryError.DUPLICATED_RESERVED_VERSIONS, ) delete_git_branch(self.repo, 'latest') sync_repository.sync_repo() api_v2.project().sync_versions.post.assert_called()