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},
        )
示例#2
0
    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},
        )
示例#3
0
    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))
示例#5
0
    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()
示例#6
0
    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()
示例#8
0
    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)
示例#9
0
    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
        )
示例#11
0
    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,
        )
示例#12
0
    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},
        )
示例#14
0
    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},
        )
示例#15
0
    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()