Browse Source

Add test for GitClient.clone.

Jelmer Vernooij 3 years ago
parent
commit
20f9c56219
4 changed files with 15 additions and 2 deletions
  1. 2 0
      NEWS
  2. 1 1
      dulwich/client.py
  3. 0 1
      dulwich/porcelain.py
  4. 12 0
      dulwich/tests/test_client.py

+ 2 - 0
NEWS

@@ -1,5 +1,7 @@
 0.20.31	UNRELEASED
 
+ * Add GitClient.clone(). (Jelmer Vernooij)
+
 0.20.30	2022-01-08
 
 0.20.29	2022-01-08

+ 1 - 1
dulwich/client.py

@@ -496,7 +496,7 @@ class GitClient(object):
         """
         raise NotImplementedError(self.send_pack)
 
-    def clone(self, path, target_path, mkdir=True, bare=False, origin="origin",
+    def clone(self, path, target_path, mkdir: bool = True, bare=False, origin="origin",
               checkout=None, branch=None, depth=None):
         """Clone a repository."""
         from .refs import _set_origin_head, _set_default_branch, _set_head

+ 0 - 1
dulwich/porcelain.py

@@ -74,7 +74,6 @@ import stat
 import sys
 import time
 from typing import (
-    Dict,
     Optional,
     Tuple,
     Union,

+ 12 - 0
dulwich/tests/test_client.py

@@ -841,6 +841,18 @@ class LocalGitClientTests(TestCase):
         self.addCleanup(tear_down_repo, s)
         self.assertEqual(s.get_refs(), c.fetch(s.path, t).refs)
 
+    def test_clone(self):
+        c = LocalGitClient()
+        s = open_repo("a.git")
+        self.addCleanup(tear_down_repo, s)
+        target = tempfile.mkdtemp()
+        self.addCleanup(shutil.rmtree, target)
+        result_repo = c.clone(s.path, target, mkdir=False)
+        expected = dict(s.get_refs())
+        expected[b'refs/remotes/origin/HEAD'] = expected[b'HEAD']
+        expected[b'refs/remotes/origin/master'] = expected[b'refs/heads/master']
+        self.assertEqual(expected, result_repo.get_refs())
+
     def test_fetch_empty(self):
         c = LocalGitClient()
         s = open_repo("a.git")