336
336
factory = knit.make_file_factory(True, versionedfile.PrefixMapper())
337
337
self._texts = factory(self.get_transport('texts'))
339
def test_import_blob_missing_in_one_parent(self):
340
builder = self.make_branch_builder('br')
341
builder.start_series()
342
rev_root = builder.build_snapshot(None, [
343
('add', ('', b'rootid', 'directory', ''))])
344
rev1 = builder.build_snapshot([rev_root], [
345
('add', ('bla', self._mapping.generate_file_id('bla'), 'file', b'content'))])
346
rev2 = builder.build_snapshot([rev_root], [])
347
builder.finish_series()
348
branch = builder.get_branch()
350
blob = Blob.from_string(b"bar")
351
objs = { "blobname": blob}
352
ret = import_git_blob(self._texts, self._mapping, b"bla", b"bla",
354
branch.repository.revision_tree(rev1), b'rootid', b"somerevid",
355
[branch.repository.revision_tree(r) for r in [rev1, rev2]],
357
(None, DEFAULT_FILE_MODE), DummyStoreUpdater(),
358
self._mapping.generate_file_id)
359
self.assertEqual(set([(b'git:bla', b'somerevid')]), self._texts.keys())
339
361
def test_import_blob_simple(self):
340
362
blob = Blob.from_string(b"bar")
341
base_inv = Inventory()
342
363
objs = { "blobname": blob}
343
364
ret = import_git_blob(self._texts, self._mapping, b"bla", b"bla",
344
365
(None, "blobname"),
345
base_inv, None, b"somerevid", [], objs.__getitem__,
366
None, None, b"somerevid", [], objs.__getitem__,
346
367
(None, DEFAULT_FILE_MODE), DummyStoreUpdater(),
347
368
self._mapping.generate_file_id)
348
369
self.assertEqual(set([(b'git:bla', b'somerevid')]), self._texts.keys())
358
379
self.assertEqual(osutils.sha_strings([b"bar"]), ie.text_sha1)
360
381
def test_import_tree_empty_root(self):
361
base_inv = Inventory(root_id=None)
363
383
ret, child_modes = import_git_tree(self._texts, self._mapping, b"", b"",
364
(None, tree.id), base_inv,
384
(None, tree.id), None,
365
385
None, b"somerevid", [], {tree.id: tree}.__getitem__,
366
386
(None, stat.S_IFDIR), DummyStoreUpdater(),
367
387
self._mapping.generate_file_id)
378
398
self.assertEqual(None, ie.text_sha1)
380
400
def test_import_tree_empty(self):
381
base_inv = Inventory()
383
402
ret, child_modes = import_git_tree(self._texts, self._mapping, b"bla", b"bla",
384
(None, tree.id), base_inv, None, b"somerevid", [],
403
(None, tree.id), None, None, b"somerevid", [],
385
404
{ tree.id: tree }.__getitem__,
386
405
(None, stat.S_IFDIR), DummyStoreUpdater(),
387
406
self._mapping.generate_file_id)
398
417
self.assertEqual(None, ie.text_sha1)
400
419
def test_import_tree_with_file(self):
401
base_inv = Inventory()
402
420
blob = Blob.from_string(b"bar1")
404
422
tree.add(b"foo", stat.S_IFREG | 0o644, blob.id)
405
423
objects = { blob.id: blob, tree.id: tree }
406
424
ret, child_modes = import_git_tree(self._texts, self._mapping, b"bla", b"bla",
407
(None, tree.id), base_inv, None, b"somerevid", [],
425
(None, tree.id), None, None, b"somerevid", [],
408
426
objects.__getitem__, (None, stat.S_IFDIR), DummyStoreUpdater(),
409
427
self._mapping.generate_file_id)
410
428
self.assertEqual(child_modes, {})
423
441
self.assertEqual(False, ie.executable)
425
443
def test_import_tree_with_unusual_mode_file(self):
426
base_inv = Inventory()
427
444
blob = Blob.from_string(b"bar1")
429
446
tree.add(b"foo", stat.S_IFREG | 0o664, blob.id)
430
447
objects = { blob.id: blob, tree.id: tree }
431
448
ret, child_modes = import_git_tree(self._texts, self._mapping,
432
b"bla", b"bla", (None, tree.id), base_inv, None, b"somerevid", [],
449
b"bla", b"bla", (None, tree.id), None, None, b"somerevid", [],
433
450
objects.__getitem__, (None, stat.S_IFDIR), DummyStoreUpdater(),
434
451
self._mapping.generate_file_id)
435
452
self.assertEqual(child_modes, { b"bla/foo": stat.S_IFREG | 0o664 })
437
454
def test_import_tree_with_file_exe(self):
438
base_inv = Inventory(root_id=None)
439
455
blob = Blob.from_string(b"bar")
441
457
tree.add(b"foo", 0o100755, blob.id)
442
458
objects = { blob.id: blob, tree.id: tree }
443
459
ret, child_modes = import_git_tree(self._texts, self._mapping, b"", b"",
444
(None, tree.id), base_inv, None, b"somerevid", [],
460
(None, tree.id), None, None, b"somerevid", [],
445
461
objects.__getitem__, (None, stat.S_IFDIR), DummyStoreUpdater(),
446
462
self._mapping.generate_file_id)
447
463
self.assertEqual(child_modes, {})