Пример #1
0
 def test_repo_get_log(self):
     factory = RepoFactory(self.repo_store, num_commits=4)
     factory.build()
     commits_from = factory.commits[2].hex
     resp = self.app.get('/repo/{}/log/{}'.format(
         self.repo_path, commits_from))
     self.assertEqual(3, len(resp.json))
Пример #2
0
 def test_repo_get_non_commit(self):
     """Trying to get a non-commit returns HTTP 404."""
     factory = RepoFactory(self.repo_store, num_commits=1)
     factory.build()
     tree_oid = factory.repo[factory.commits[0]].tree.hex
     resp = self.app.get('/repo/{}/commits/{}'.format(
         self.repo_path, tree_oid), expect_errors=True)
     self.assertEqual(404, resp.status_code)
Пример #3
0
    def test_repo_get(self):
        """The GET method on a repository returns its properties."""
        factory = RepoFactory(self.repo_store, num_branches=2, num_commits=1)
        factory.build()
        factory.repo.set_head('refs/heads/branch-0')

        resp = self.app.get('/repo/{}'.format(self.repo_path))
        self.assertEqual(200, resp.status_code)
        self.assertEqual({'default_branch': 'refs/heads/branch-0'}, resp.json)
Пример #4
0
    def test_repo_get_default_branch_missing(self):
        """default_branch is returned even if that branch has been deleted."""
        factory = RepoFactory(self.repo_store, num_branches=2, num_commits=1)
        factory.build()
        factory.repo.set_head('refs/heads/branch-0')
        factory.repo.lookup_reference('refs/heads/branch-0').delete()

        resp = self.app.get('/repo/{}'.format(self.repo_path))
        self.assertEqual(200, resp.status_code)
        self.assertEqual({'default_branch': 'refs/heads/branch-0'}, resp.json)
Пример #5
0
    def test_repo_get_commit_collection(self):
        """Ensure commits can be returned in bulk."""
        factory = RepoFactory(self.repo_store, num_commits=10)
        factory.build()
        bulk_commits = {'commits': [c.hex for c in factory.commits[0::2]]}

        resp = self.app.post_json('/repo/{}/commits'.format(
            self.repo_path), bulk_commits)
        self.assertEqual(5, len(resp.json))
        self.assertEqual(bulk_commits['commits'][0], resp.json[0]['sha1'])
Пример #6
0
    def test_repo_patch_default_branch(self):
        """A repository's default branch ("HEAD") can be changed."""
        factory = RepoFactory(self.repo_store, num_branches=2, num_commits=1)
        factory.build()
        factory.repo.set_head('refs/heads/branch-0')
        self.assertReferencesEqual(factory.repo, 'refs/heads/branch-0', 'HEAD')

        resp = self.app.patch_json(
            '/repo/{}'.format(self.repo_path),
            {'default_branch': 'refs/heads/branch-1'})
        self.assertEqual(204, resp.status_code)
        self.assertReferencesEqual(factory.repo, 'refs/heads/branch-1', 'HEAD')
Пример #7
0
    def test_repo_init_with_clone(self):
        """Repo can be initialised with optional clone."""
        factory = RepoFactory(self.repo_store, num_commits=2)
        factory.build()
        new_repo_path = uuid.uuid1().hex
        resp = self.app.post_json('/repo', {'repo_path': new_repo_path,
                                            'clone_from': self.repo_path,
                                            'clone_refs': True})
        repo1_revlist = get_revlist(factory.repo)
        clone_from = resp.json['repo_url'].split('/')[-1]
        repo2 = open_repo(os.path.join(self.repo_root, clone_from))
        repo2_revlist = get_revlist(repo2)

        self.assertEqual(repo1_revlist, repo2_revlist)
        self.assertEqual(200, resp.status_code)
        self.assertIn(new_repo_path, resp.json['repo_url'])
Пример #8
0
    def test_repo_get_commit_collection_ignores_errors(self):
        """Non-existent OIDs and non-commits in a collection are ignored."""
        factory = RepoFactory(self.repo_store, num_commits=10)
        factory.build()
        bulk_commits = {
            'commits': [
                factory.commits[0].hex,
                factory.repo[factory.commits[0]].tree.hex,
                factory.nonexistent_oid(),
                ],
            }

        resp = self.app.post_json(
            '/repo/{}/commits'.format(self.repo_path), bulk_commits)
        self.assertEqual(1, len(resp.json))
        self.assertEqual(bulk_commits['commits'][0], resp.json[0]['sha1'])
Пример #9
0
 def test_repo_get_log_with_limit(self):
     """Ensure the commit log can filtered by limit."""
     factory = RepoFactory(self.repo_store, num_commits=10)
     repo = factory.build()
     head = repo.head.target
     resp = self.app.get('/repo/{}/log/{}?limit=5'.format(
         self.repo_path, head))
     self.assertEqual(5, len(resp.json))
Пример #10
0
 def test_repo_get_log_with_stop(self):
     """Ensure the commit log can be filtered by a stop commit."""
     factory = RepoFactory(self.repo_store, num_commits=10)
     repo = factory.build()
     stop_commit = factory.commits[4]
     excluded_commit = factory.commits[5]
     head = repo.head.target
     resp = self.app.get('/repo/{}/log/{}?stop={}'.format(
         self.repo_path, head, stop_commit))
     self.assertEqual(5, len(resp.json))
     self.assertNotIn(excluded_commit, resp.json)