Przeglądaj źródła

Add read_packs_file function.

Jelmer Vernooij 6 lat temu
rodzic
commit
0930853ec9
2 zmienionych plików z 19 dodań i 0 usunięć
  1. 11 0
      dulwich/object_store.py
  2. 8 0
      dulwich/tests/test_object_store.py

+ 11 - 0
dulwich/object_store.py

@@ -1317,3 +1317,14 @@ class OverlayObjectStore(BaseObjectStore):
                 return True
                 return True
         else:
         else:
             return False
             return False
+
+
+def read_packs_file(f):
+    """Yield the packs listed in a packs file."""
+    for line in f.read().splitlines():
+        if not line:
+            continue
+        (kind, name) = line.split(b" ", 1)
+        if kind != b"P":
+            continue
+        yield name.decode(sys.getfilesystemencoding())

+ 8 - 0
dulwich/tests/test_object_store.py

@@ -47,6 +47,7 @@ from dulwich.object_store import (
     OverlayObjectStore,
     OverlayObjectStore,
     ObjectStoreGraphWalker,
     ObjectStoreGraphWalker,
     commit_tree_changes,
     commit_tree_changes,
+    read_packs_file,
     tree_lookup_path,
     tree_lookup_path,
     )
     )
 from dulwich.pack import (
 from dulwich.pack import (
@@ -645,3 +646,10 @@ class CommitTreeChangesTests(TestCase):
         self.assertEqual(set(new_tree), {b'a', b'ad', b'c'})
         self.assertEqual(set(new_tree), {b'a', b'ad', b'c'})
         ad_tree = self.store[new_tree[b'ad'][1]]
         ad_tree = self.store[new_tree[b'ad'][1]]
         self.assertEqual(set(ad_tree), {b'b', b'c'})
         self.assertEqual(set(ad_tree), {b'b', b'c'})
+
+
+class TestReadPacksFile(TestCase):
+
+    def test_read_packs(self):
+        self.assertEqual(["pack-1.pack"], list(read_packs_file(BytesIO(b"""P pack-1.pack
+"""))))