Beispiel #1
0
 def test_object_diff_bin_blob_force(self):
     f = BytesIO()
     # Prepare two slightly different PNG headers
     b1 = Blob.from_string(b"\x89\x50\x4e\x47\x0d\x0a\x1a\x0a"
                           b"\x00\x00\x00\x0d\x49\x48\x44\x52"
                           b"\x00\x00\x01\xd5\x00\x00\x00\x9f"
                           b"\x08\x04\x00\x00\x00\x05\x04\x8b")
     b2 = Blob.from_string(b"\x89\x50\x4e\x47\x0d\x0a\x1a\x0a"
                           b"\x00\x00\x00\x0d\x49\x48\x44\x52"
                           b"\x00\x00\x01\xd5\x00\x00\x00\x9f"
                           b"\x08\x03\x00\x00\x00\x98\xd3\xb3")
     store = MemoryObjectStore()
     store.add_objects([(b1, None), (b2, None)])
     write_object_diff(f,
                       store, (b'foo.png', 0o644, b1.id),
                       (b'bar.png', 0o644, b2.id),
                       diff_binary=True)
     self.assertEqual([
         b'diff --git a/foo.png b/bar.png', b'index f73e47d..06364b7 644',
         b'--- a/foo.png', b'+++ b/bar.png', b'@@ -1,4 +1,4 @@',
         b' \x89PNG', b' \x1a', b' \x00\x00\x00',
         b'-IHDR\x00\x00\x01\xd5\x00\x00\x00'
         b'\x9f\x08\x04\x00\x00\x00\x05\x04\x8b',
         b'\\ No newline at end of file',
         b'+IHDR\x00\x00\x01\xd5\x00\x00\x00\x9f'
         b'\x08\x03\x00\x00\x00\x98\xd3\xb3',
         b'\\ No newline at end of file'
     ],
                      f.getvalue().splitlines())
Beispiel #2
0
    def setUp(self):
        super(TestThinPack, self).setUp()
        self.store = MemoryObjectStore()
        self.blobs = {}
        for blob in (b'foo', b'bar', b'foo1234', b'bar2468'):
            self.blobs[blob] = make_object(Blob, data=blob)
        self.store.add_object(self.blobs[b'foo'])
        self.store.add_object(self.blobs[b'bar'])

        # Build a thin pack. 'foo' is as an external reference, 'bar' an
        # internal reference.
        self.pack_dir = tempfile.mkdtemp()
        self.addCleanup(shutil.rmtree, self.pack_dir)
        self.pack_prefix = os.path.join(self.pack_dir, 'pack')

        with open(self.pack_prefix + '.pack', 'wb') as f:
            build_pack(f, [(REF_DELTA, (self.blobs[b'foo'].id, b'foo1234')),
                           (Blob.type_num, b'bar'),
                           (REF_DELTA, (self.blobs[b'bar'].id, b'bar2468'))],
                       store=self.store)

        # Index the new pack.
        with self.make_pack(True) as pack:
            with PackData(pack._data_path) as data:
                data.pack = pack
                data.create_index(self.pack_prefix + '.idx')

        del self.store[self.blobs[b'bar'].id]
 def test_against_empty_tree(self):
     i = self.get_simple_index("index")
     changes = list(i.changes_from_tree(MemoryObjectStore(), None))
     self.assertEqual(1, len(changes))
     (oldname, newname), (oldmode, newmode), (oldsha, newsha) = changes[0]
     self.assertEqual(b'bla', newname)
     self.assertEqual(b'e69de29bb2d1d6434b8b29ae775ad8c2e48c5391', newsha)
 def setUp(self):
     super(GitFastExporterTests, self).setUp()
     self.store = MemoryObjectStore()
     self.stream = BytesIO()
     try:
         from my_dulwich.fastexport import GitFastExporter
     except ImportError:
         raise SkipTest("python-fastimport not available")
     self.fastexporter = GitFastExporter(self.stream, self.store)
 def test_empty(self):
     store = MemoryObjectStore()
     c1, c2, c3 = build_commit_graph(store, [[1], [2, 1], [3, 1, 2]])
     tree = store[c3.tree]
     stream = b''.join(tar_stream(store, tree, 10))
     out = BytesIO(stream)
     tf = tarfile.TarFile(fileobj=out)
     self.addCleanup(tf.close)
     self.assertEqual([], tf.getnames())
 def _get_example_tar_stream(self, *tar_stream_args, **tar_stream_kwargs):
     store = MemoryObjectStore()
     b1 = Blob.from_string(b"somedata")
     store.add_object(b1)
     t1 = Tree()
     t1.add(b"somename", 0o100644, b1.id)
     store.add_object(t1)
     stream = b''.join(
         tar_stream(store, t1, *tar_stream_args, **tar_stream_kwargs))
     return BytesIO(stream)
Beispiel #7
0
 def test_object_diff_remove_blob(self):
     f = BytesIO()
     b1 = Blob.from_string(b"new\nsame\n")
     store = MemoryObjectStore()
     store.add_object(b1)
     write_object_diff(f, store, (b"bar.txt", 0o644, b1.id),
                       (None, None, None))
     self.assertEqual([
         b'diff --git a/bar.txt /dev/null', b'deleted mode 644',
         b'index a116b51..0000000', b'--- a/bar.txt', b'+++ /dev/null',
         b'@@ -1,2 +0,0 @@', b'-new', b'-same'
     ],
                      f.getvalue().splitlines())
Beispiel #8
0
 def test_object_diff_add_blob(self):
     f = BytesIO()
     store = MemoryObjectStore()
     b2 = Blob.from_string(b"new\nsame\n")
     store.add_object(b2)
     write_object_diff(f, store, (None, None, None),
                       (b"bar.txt", 0o644, b2.id))
     self.assertEqual([
         b'diff --git /dev/null b/bar.txt', b'new mode 644',
         b'index 0000000..a116b51 644', b'--- /dev/null', b'+++ b/bar.txt',
         b'@@ -0,0 +1,2 @@', b'+new', b'+same'
     ],
                      f.getvalue().splitlines())
Beispiel #9
0
 def test_object_diff_blob(self):
     f = BytesIO()
     b1 = Blob.from_string(b"old\nsame\n")
     b2 = Blob.from_string(b"new\nsame\n")
     store = MemoryObjectStore()
     store.add_objects([(b1, None), (b2, None)])
     write_object_diff(f, store, (b"foo.txt", 0o644, b1.id),
                       (b"bar.txt", 0o644, b2.id))
     self.assertEqual([
         b"diff --git a/foo.txt b/bar.txt", b"index 3b0f961..a116b51 644",
         b"--- a/foo.txt", b"+++ b/bar.txt", b"@@ -1,2 +1,2 @@", b"-old",
         b"+new", b" same"
     ],
                      f.getvalue().splitlines())
Beispiel #10
0
 def test_object_diff_add_bin_blob(self):
     f = BytesIO()
     b2 = Blob.from_string(b'\x89\x50\x4e\x47\x0d\x0a\x1a\x0a'
                           b'\x00\x00\x00\x0d\x49\x48\x44\x52'
                           b'\x00\x00\x01\xd5\x00\x00\x00\x9f'
                           b'\x08\x03\x00\x00\x00\x98\xd3\xb3')
     store = MemoryObjectStore()
     store.add_object(b2)
     write_object_diff(f, store, (None, None, None),
                       (b'bar.png', 0o644, b2.id))
     self.assertEqual([
         b'diff --git /dev/null b/bar.png', b'new mode 644',
         b'index 0000000..06364b7 644',
         b'Binary files /dev/null and b/bar.png differ'
     ],
                      f.getvalue().splitlines())
Beispiel #11
0
 def test_object_diff_remove_bin_blob(self):
     f = BytesIO()
     b1 = Blob.from_string(b'\x89\x50\x4e\x47\x0d\x0a\x1a\x0a'
                           b'\x00\x00\x00\x0d\x49\x48\x44\x52'
                           b'\x00\x00\x01\xd5\x00\x00\x00\x9f'
                           b'\x08\x04\x00\x00\x00\x05\x04\x8b')
     store = MemoryObjectStore()
     store.add_object(b1)
     write_object_diff(f, store, (b'foo.png', 0o644, b1.id),
                       (None, None, None))
     self.assertEqual([
         b'diff --git a/foo.png /dev/null', b'deleted mode 644',
         b'index f73e47d..0000000',
         b'Binary files a/foo.png and /dev/null differ'
     ],
                      f.getvalue().splitlines())
Beispiel #12
0
 def test_tree_diff(self):
     f = BytesIO()
     store = MemoryObjectStore()
     added = Blob.from_string(b"add\n")
     removed = Blob.from_string(b"removed\n")
     changed1 = Blob.from_string(b"unchanged\nremoved\n")
     changed2 = Blob.from_string(b"unchanged\nadded\n")
     unchanged = Blob.from_string(b"unchanged\n")
     tree1 = Tree()
     tree1.add(b"removed.txt", 0o644, removed.id)
     tree1.add(b"changed.txt", 0o644, changed1.id)
     tree1.add(b"unchanged.txt", 0o644, changed1.id)
     tree2 = Tree()
     tree2.add(b"added.txt", 0o644, added.id)
     tree2.add(b"changed.txt", 0o644, changed2.id)
     tree2.add(b"unchanged.txt", 0o644, changed1.id)
     store.add_objects([
         (o, None) for o in
         [tree1, tree2, added, removed, changed1, changed2, unchanged]
     ])
     write_tree_diff(f, store, tree1.id, tree2.id)
     self.assertEqual([
         b'diff --git /dev/null b/added.txt',
         b'new mode 644',
         b'index 0000000..76d4bb8 644',
         b'--- /dev/null',
         b'+++ b/added.txt',
         b'@@ -0,0 +1 @@',
         b'+add',
         b'diff --git a/changed.txt b/changed.txt',
         b'index bf84e48..1be2436 644',
         b'--- a/changed.txt',
         b'+++ b/changed.txt',
         b'@@ -1,2 +1,2 @@',
         b' unchanged',
         b'-removed',
         b'+added',
         b'diff --git a/removed.txt /dev/null',
         b'deleted mode 644',
         b'index 2c3f0b3..0000000',
         b'--- a/removed.txt',
         b'+++ /dev/null',
         b'@@ -1 +0,0 @@',
         b'-removed',
     ],
                      f.getvalue().splitlines())
Beispiel #13
0
 def test_object_diff_bin_blob(self):
     f = BytesIO()
     # Prepare two slightly different PNG headers
     b1 = Blob.from_string(b"\x89\x50\x4e\x47\x0d\x0a\x1a\x0a"
                           b"\x00\x00\x00\x0d\x49\x48\x44\x52"
                           b"\x00\x00\x01\xd5\x00\x00\x00\x9f"
                           b"\x08\x04\x00\x00\x00\x05\x04\x8b")
     b2 = Blob.from_string(b"\x89\x50\x4e\x47\x0d\x0a\x1a\x0a"
                           b"\x00\x00\x00\x0d\x49\x48\x44\x52"
                           b"\x00\x00\x01\xd5\x00\x00\x00\x9f"
                           b"\x08\x03\x00\x00\x00\x98\xd3\xb3")
     store = MemoryObjectStore()
     store.add_objects([(b1, None), (b2, None)])
     write_object_diff(f, store, (b'foo.png', 0o644, b1.id),
                       (b'bar.png', 0o644, b2.id))
     self.assertEqual([
         b'diff --git a/foo.png b/bar.png', b'index f73e47d..06364b7 644',
         b'Binary files a/foo.png and b/bar.png differ'
     ],
                      f.getvalue().splitlines())
Beispiel #14
0
 def test_tree_diff_submodule(self):
     f = BytesIO()
     store = MemoryObjectStore()
     tree1 = Tree()
     tree1.add(b"asubmodule", S_IFGITLINK,
               b"06d0bdd9e2e20377b3180e4986b14c8549b393e4")
     tree2 = Tree()
     tree2.add(b"asubmodule", S_IFGITLINK,
               b"cc975646af69f279396d4d5e1379ac6af80ee637")
     store.add_objects([(o, None) for o in [tree1, tree2]])
     write_tree_diff(f, store, tree1.id, tree2.id)
     self.assertEqual([
         b'diff --git a/asubmodule b/asubmodule',
         b'index 06d0bdd..cc97564 160000',
         b'--- a/asubmodule',
         b'+++ b/asubmodule',
         b'@@ -1 +1 @@',
         b'-Submodule commit 06d0bdd9e2e20377b3180e4986b14c8549b393e4',
         b'+Submodule commit cc975646af69f279396d4d5e1379ac6af80ee637',
     ],
                      f.getvalue().splitlines())
Beispiel #15
0
 def test_object_diff_kind_change(self):
     f = BytesIO()
     b1 = Blob.from_string(b"new\nsame\n")
     store = MemoryObjectStore()
     store.add_object(b1)
     write_object_diff(f, store, (b"bar.txt", 0o644, b1.id),
                       (b"bar.txt", 0o160000,
                        b"06d0bdd9e2e20377b3180e4986b14c8549b393e4"))
     self.assertEqual([
         b'diff --git a/bar.txt b/bar.txt',
         b'old mode 644',
         b'new mode 160000',
         b'index a116b51..06d0bdd 160000',
         b'--- a/bar.txt',
         b'+++ b/bar.txt',
         b'@@ -1,2 +1 @@',
         b'-new',
         b'-same',
         b'+Submodule commit 06d0bdd9e2e20377b3180e4986b14c8549b393e4',
     ],
                      f.getvalue().splitlines())
 def setUp(self):
     super(BuildCommitGraphTest, self).setUp()
     self.store = MemoryObjectStore()
Beispiel #17
0
 def setUp(self):
     super(TestGreenThreadsMissingObjectFinder, self).setUp()
     self.store = MemoryObjectStore()
     self.cmt_amount = 10
     self.objs = init_store(self.store, self.cmt_amount)
 def setUp(self):
     super(MissingObjectFinderTest, self).setUp()
     self.store = MemoryObjectStore()
     self.commits = []
Beispiel #19
0
 def setUp(self):
     super(WalkerTest, self).setUp()
     self.store = MemoryObjectStore()
Beispiel #20
0
 def setUp(self):
     super(DeltaChainIteratorTests, self).setUp()
     self.store = MemoryObjectStore()
     self.fetched = set()
 def setUp(self):
     super(DiffTestCase, self).setUp()
     self.store = MemoryObjectStore()
     self.empty_tree = self.commit_tree([])
 def setUp(self):
     super(CommitTreeTests, self).setUp()
     self.store = MemoryObjectStore()
Beispiel #23
0
 def setUp(self):
     super(FindShallowTests, self).setUp()
     self._store = MemoryObjectStore()
Beispiel #24
0
 def setUp(self):
     super(TestGreenThreadsObjectStoreIterator, self).setUp()
     self.store = MemoryObjectStore()
     self.cmt_amount = 10
     self.objs = init_store(self.store, self.cmt_amount)