116
117
builder.set_symlink(b'link', b'broken')
117
118
builder.set_file(b'subdir/subfile', b'subdir text\n', False)
118
119
commit_handle = builder.commit(b'Joe Foo <joe@foo.com>', b'message',
119
timestamp=1205433193)
120
timestamp=1205433193)
120
121
mapping = builder.finish()
121
122
return mapping[commit_handle]
153
154
self.assertEqual(repo.supports_rich_root(), True)
155
156
def test_get_signature_text(self):
156
self.assertRaises(errors.NoSuchRevision, self.git_repo.get_signature_text, revision.NULL_REVISION)
158
errors.NoSuchRevision, self.git_repo.get_signature_text, revision.NULL_REVISION)
158
160
def test_has_signature_for_revision_id(self):
159
self.assertEqual(False, self.git_repo.has_signature_for_revision_id(revision.NULL_REVISION))
161
self.assertEqual(False, self.git_repo.has_signature_for_revision_id(
162
revision.NULL_REVISION))
161
164
def test_all_revision_ids_none(self):
162
165
self.assertEqual([], self.git_repo.all_revision_ids())
166
169
revid = default_mapping.revision_id_foreign_to_bzr(cid)
167
170
g = self.git_repo.get_known_graph_ancestry([revid])
168
171
self.assertEqual(frozenset([revid]),
170
173
self.assertEqual([(revid, 0, (1,), True)],
171
[(n.key, n.merge_depth, n.revno, n.end_of_merge)
172
for n in g.merge_sort(revid)])
174
[(n.key, n.merge_depth, n.revno, n.end_of_merge)
175
for n in g.merge_sort(revid)])
174
177
def test_all_revision_ids(self):
175
178
commit_id = self._do_commit()
176
179
self.assertEqual(
177
[default_mapping.revision_id_foreign_to_bzr(commit_id)],
178
self.git_repo.all_revision_ids())
180
[default_mapping.revision_id_foreign_to_bzr(commit_id)],
181
self.git_repo.all_revision_ids())
180
183
def assertIsNullInventory(self, inv):
181
184
self.assertEqual(inv.root, None)
192
195
def test_get_parent_map_null(self):
193
196
self.assertEqual({revision.NULL_REVISION: ()},
194
self.git_repo.get_parent_map([revision.NULL_REVISION]))
197
self.git_repo.get_parent_map([revision.NULL_REVISION]))
197
200
class SigningGitRepository(tests.TestCaseWithTransport):
202
205
wt = self.make_branch_and_tree('.', format='git')
203
206
branch = wt.branch
204
207
revid = wt.commit("base", allow_pointless=True)
205
self.assertFalse(branch.repository.has_signature_for_revision_id(revid))
209
branch.repository.has_signature_for_revision_id(revid))
207
211
breezy.gpg.GPGStrategy = breezy.gpg.LoopbackGPGStrategy
208
212
conf = config.MemoryStack(b'''
209
213
create_signatures=always
211
revid2 = wt.commit(config=conf, message="base", allow_pointless=True)
215
revid2 = wt.commit(config=conf, message="base",
216
allow_pointless=True)
213
219
return breezy.gpg.LoopbackGPGStrategy(None).sign(text)
214
self.assertIsInstance(branch.repository.get_signature_text(revid2), bytes)
220
self.assertIsInstance(
221
branch.repository.get_signature_text(revid2), bytes)
216
223
breezy.gpg.GPGStrategy = oldstrategy
226
class RevpropsRepository(tests.TestCaseWithTransport):
228
def test_author(self):
229
wt = self.make_branch_and_tree('.', format='git')
231
"base", allow_pointless=True,
232
revprops={'author': 'Joe Example <joe@example.com>'})
233
rev = wt.branch.repository.get_revision(revid)
234
r = dulwich.repo.Repo('.')
235
self.assertEqual(b'Joe Example <joe@example.com>', r[r.head()].author)
237
def test_authors(self):
238
wt = self.make_branch_and_tree('.', format='git')
240
"base", allow_pointless=True,
241
revprops={'authors': 'Joe Example <joe@example.com>'})
242
rev = wt.branch.repository.get_revision(revid)
243
r = dulwich.repo.Repo('.')
244
self.assertEqual(b'Joe Example <joe@example.com>', r[r.head()].author)
246
def test_multiple_authors(self):
247
wt = self.make_branch_and_tree('.', format='git')
249
Exception, wt.commit, "base", allow_pointless=True,
250
revprops={'authors': 'Joe Example <joe@example.com>\n'
251
'Jane Doe <jane@example.com\n>'})
219
254
class GitRepositoryFormat(tests.TestCase):
225
260
def test_get_format_description(self):
226
261
self.assertEqual("Git Repository",
227
self.format.get_format_description())
262
self.format.get_format_description())
230
265
class RevisionGistImportTests(tests.TestCaseWithTransport):
244
279
def object_iter(self):
245
store = BazaarObjectStore(self.bzr_tree.branch.repository, default_mapping)
246
store_iterator = MissingObjectsIterator(store, self.bzr_tree.branch.repository)
280
store = BazaarObjectStore(
281
self.bzr_tree.branch.repository, default_mapping)
282
store_iterator = MissingObjectsIterator(
283
store, self.bzr_tree.branch.repository)
247
284
return store, store_iterator
249
286
def import_rev(self, revid, parent_lookup=None):
260
297
def test_pointless(self):
261
298
revid = self.bzr_tree.commit("pointless", timestamp=1205433193,
262
timezone=0, committer="Jelmer Vernooij <jelmer@samba.org>")
263
self.assertEqual(b"2caa8094a5b794961cd9bf582e3e2bb090db0b14",
264
self.import_rev(revid))
265
self.assertEqual(b"2caa8094a5b794961cd9bf582e3e2bb090db0b14",
266
self.import_rev(revid))
299
timezone=0, committer="Jelmer Vernooij <jelmer@samba.org>")
300
self.assertEqual(b"2caa8094a5b794961cd9bf582e3e2bb090db0b14",
301
self.import_rev(revid))
302
self.assertEqual(b"2caa8094a5b794961cd9bf582e3e2bb090db0b14",
303
self.import_rev(revid))
269
306
class ForeignTestsRepositoryFactory(object):