浏览代码

compat.test_client: test fetching packs

Change-Id: Ib7b271dd30265ea6633fece8c04566165fd8ce84
Augie Fackler 15 年之前
父节点
当前提交
6e1cbc7e82
共有 1 个文件被更改,包括 23 次插入2 次删除
  1. 23 2
      dulwich/tests/compat/test_client.py

+ 23 - 2
dulwich/tests/compat/test_client.py

@@ -75,6 +75,11 @@ class DulwichClientTest(CompatTestCase):
             pass
         shutil.rmtree(self.gitroot)
 
+    def assertDestEqualsSrc(self):
+        src = repo.Repo(os.path.join(self.gitroot, 'server_new.export'))
+        dest = repo.Repo(os.path.join(self.gitroot, 'dest'))
+        self.assertReposEqual(src, dest)
+
     def test_send_pack(self):
         c = client.TCPGitClient('localhost')
         srcpath = os.path.join(self.gitroot, 'server_new.export')
@@ -95,8 +100,7 @@ class DulwichClientTest(CompatTestCase):
         del sendrefs['HEAD']
         c.send_pack('/dest', lambda _: sendrefs,
                     src.object_store.generate_pack_contents)
-        dest = repo.Repo(os.path.join(self.gitroot, 'dest'))
-        self.assertReposEqual(src, dest)
+        self.assertDestEqualsSrc()
 
     def disable_ff_and_make_dummy_commit(self):
         # disable non-fast-forward pushes to the server
@@ -148,3 +152,20 @@ class DulwichClientTest(CompatTestCase):
             self.assertEqual({'refs/heads/branch': 'non-fast-forward',
                               'refs/heads/master': 'non-fast-forward'},
                              e.ref_status)
+
+    def test_fetch_pack(self):
+        c = client.TCPGitClient('localhost')
+        dest = repo.Repo(os.path.join(self.gitroot, 'dest'))
+        refs = c.fetch('/server_new.export', dest)
+        map(lambda r: dest.refs.set_if_equals(r[0], None, r[1]), refs.items())
+        self.assertDestEqualsSrc()
+
+    def test_incremental_fetch_pack(self):
+        self.test_fetch_pack()
+        dest, dummy = self.disable_ff_and_make_dummy_commit()
+        dest.refs['refs/heads/master'] = dummy
+        c = client.TCPGitClient('localhost')
+        dest = repo.Repo(os.path.join(self.gitroot, 'server_new.export'))
+        refs = c.fetch('/dest', dest)
+        map(lambda r: dest.refs.set_if_equals(r[0], None, r[1]), refs.items())
+        self.assertDestEqualsSrc()