/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to tests/test_repository.py

More work on roundtrip push support.

Show diffs side-by-side

added added

removed removed

Lines of Context:
50
50
class TestGitRepositoryFeatures(tests.TestCaseInTempDir):
51
51
    """Feature tests for GitRepository."""
52
52
 
53
 
    _test_needs_features = [tests.GitCommandFeature]
 
53
    def _do_commit(self):
 
54
        builder = tests.GitBranchBuilder()
 
55
        builder.set_file('a', 'text for a\n', False)
 
56
        commit_handle = builder.commit('Joe Foo <joe@foo.com>', u'message')
 
57
        mapping = builder.finish()
 
58
        return mapping[commit_handle]
54
59
 
55
60
    def test_open_existing(self):
56
61
        GitRepo.init(self.test_dir)
62
67
        GitRepo.init(self.test_dir)
63
68
 
64
69
        repo = Repository.open('.')
65
 
        self.assertIsInstance(repo._git, dulwich.repo.Repo)
 
70
        self.assertIsInstance(repo._git, dulwich.repo.BaseRepo)
 
71
 
 
72
    def test_has_revision(self):
 
73
        GitRepo.init(self.test_dir)
 
74
        commit_id = self._do_commit()
 
75
        repo = Repository.open('.')
 
76
        self.assertFalse(repo.has_revision('foobar'))
 
77
        revid = default_mapping.revision_id_foreign_to_bzr(commit_id)
 
78
        self.assertTrue(repo.has_revision(revid))
 
79
 
 
80
    def test_has_revisions(self):
 
81
        GitRepo.init(self.test_dir)
 
82
        commit_id = self._do_commit()
 
83
        repo = Repository.open('.')
 
84
        self.assertEquals(set(), repo.has_revisions(['foobar']))
 
85
        revid = default_mapping.revision_id_foreign_to_bzr(commit_id)
 
86
        self.assertEquals(set([revid]), repo.has_revisions(['foobar', revid]))
66
87
 
67
88
    def test_get_revision(self):
68
89
        # GitRepository.get_revision gives a Revision object.
69
90
 
70
91
        # Create a git repository with a revision.
71
92
        GitRepo.init(self.test_dir)
72
 
        builder = tests.GitBranchBuilder()
73
 
        builder.set_file('a', 'text for a\n', False)
74
 
        commit_handle = builder.commit('Joe Foo <joe@foo.com>', u'message')
75
 
        mapping = builder.finish()
76
 
        commit_id = mapping[commit_handle]
 
93
        commit_id = self._do_commit()
77
94
 
78
95
        # Get the corresponding Revision object.
79
96
        revid = default_mapping.revision_id_foreign_to_bzr(commit_id)
100
117
        mapping = builder.finish()
101
118
        return mapping[commit_handle]
102
119
 
 
120
    def test_pack(self):
 
121
        commit_id = self.simple_commit()
 
122
        repo = Repository.open('.')
 
123
        repo.pack()
 
124
 
103
125
    def test_revision_tree(self):
104
126
        commit_id = self.simple_commit()
105
127
        revid = default_mapping.revision_id_foreign_to_bzr(commit_id)
143
165
 
144
166
class TestGitRepository(tests.TestCaseWithTransport):
145
167
 
 
168
    def _do_commit(self):
 
169
        builder = tests.GitBranchBuilder()
 
170
        builder.set_file('a', 'text for a\n', False)
 
171
        commit_handle = builder.commit('Joe Foo <joe@foo.com>', u'message')
 
172
        mapping = builder.finish()
 
173
        return mapping[commit_handle]
 
174
 
146
175
    def setUp(self):
147
176
        tests.TestCaseWithTransport.setUp(self)
148
177
        dulwich.repo.Repo.create(self.test_dir)
159
188
        self.assertEquals(False, self.git_repo.has_signature_for_revision_id(revision.NULL_REVISION))
160
189
 
161
190
    def test_all_revision_ids_none(self):
162
 
        self.assertEquals(set([revision.NULL_REVISION]), self.git_repo.all_revision_ids())
 
191
        self.assertEquals(set([]), self.git_repo.all_revision_ids())
 
192
 
 
193
    def test_all_revision_ids(self):
 
194
        commit_id = self._do_commit()
 
195
        self.assertEquals(
 
196
                set([default_mapping.revision_id_foreign_to_bzr(commit_id)]),
 
197
                self.git_repo.all_revision_ids())
163
198
 
164
199
    def test_get_ancestry_null(self):
165
200
        self.assertEquals([None, revision.NULL_REVISION], self.git_repo.get_ancestry(revision.NULL_REVISION))
213
248
 
214
249
    def object_iter(self):
215
250
        store = BazaarObjectStore(self.bzr_tree.branch.repository, default_mapping)
216
 
        return MissingObjectsIterator(store, self.bzr_tree.branch.repository)
 
251
        store_iterator = MissingObjectsIterator(store, self.bzr_tree.branch.repository)
 
252
        return store, store_iterator
217
253
 
218
254
    def import_rev(self, revid, parent_lookup=None):
219
 
        return self.object_iter().import_revision(revid)
 
255
        store, store_iter = self.object_iter()
 
256
        store._cache.idmap.start_write_group()
 
257
        try:
 
258
            return store_iter.import_revision(revid, roundtrip=False)
 
259
        except:
 
260
            store._cache.idmap.abort_write_group()
 
261
            raise
 
262
        else:
 
263
            store._cache.idmap.commit_write_group()
220
264
 
221
265
    def test_pointless(self):
222
266
        revid = self.bzr_tree.commit("pointless", timestamp=1205433193,
231
275
class ForeignTestsRepositoryFactory(object):
232
276
 
233
277
    def make_repository(self, transport):
234
 
        return dir.LocalGitBzrDirFormat().initialize_on_transport(transport).open_repository()
 
278
        return dir.LocalGitControlDirFormat().initialize_on_transport(transport).open_repository()