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)
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>'})
254
wt = self.make_branch_and_tree('.', format='git')
256
"base", allow_pointless=True,
258
'bugs': 'https://github.com/jelmer/dulwich/issues/123 fixed\n'
260
rev = wt.branch.repository.get_revision(revid)
261
r = dulwich.repo.Repo('.')
264
b'Fixes: https://github.com/jelmer/dulwich/issues/123\n',
219
268
class GitRepositoryFormat(tests.TestCase):
244
293
def object_iter(self):
245
store = BazaarObjectStore(self.bzr_tree.branch.repository, default_mapping)
246
store_iterator = MissingObjectsIterator(store, self.bzr_tree.branch.repository)
294
store = BazaarObjectStore(
295
self.bzr_tree.branch.repository, default_mapping)
296
store_iterator = MissingObjectsIterator(
297
store, self.bzr_tree.branch.repository)
247
298
return store, store_iterator
249
300
def import_rev(self, revid, parent_lookup=None):
260
311
def test_pointless(self):
261
312
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))
313
timezone=0, committer="Jelmer Vernooij <jelmer@samba.org>")
314
self.assertEqual(b"2caa8094a5b794961cd9bf582e3e2bb090db0b14",
315
self.import_rev(revid))
316
self.assertEqual(b"2caa8094a5b794961cd9bf582e3e2bb090db0b14",
317
self.import_rev(revid))
269
320
class ForeignTestsRepositoryFactory(object):