Jelmer Vernooij 16 роки тому
батько
коміт
a7e43dfa8a
2 змінених файлів з 14 додано та 11 видалено
  1. 11 11
      dulwich/pack.py
  2. 3 0
      dulwich/tests/test_pack.py

+ 11 - 11
dulwich/pack.py

@@ -124,12 +124,12 @@ class PackIndex(object):
     self._size = os.path.getsize(filename)
     self._file = open(filename, 'r')
     self._contents = simple_mmap(self._file, 0, self._size)
-    if struct.unpack(">L", self._contents[:4]) != '\377tOc':
-        self._version = 1
+    if self._contents[:4] != '\377tOc':
+        self.version = 1
         self._fan_out_table = self._read_fan_out_table(0)
     else:
-        self._version = struct.unpack_from(">L", self._contents, 4)
-        assert self._version in (2,)
+        (self.version, ) = struct.unpack_from(">L", self._contents, 4)
+        assert self.version in (2,), "Version was %d" % self.version
         self._fan_out_table = self._read_fan_out_table(8)
         self._name_table_offset = 8 + 0x100 * 4
         self._crc32_table_offset = self._name_table_offset + 20 * len(self)
@@ -147,7 +147,7 @@ class PackIndex(object):
 
     :return: Tuple with object name (SHA), offset in pack file and 
           CRC32 checksum (if known)."""
-    if self._version == 1:
+    if self.version == 1:
         (offset, name) = struct.unpack_from(">L20s", self._contents, 
             self.PACK_INDEX_HEADER_SIZE + (i * self.record_size))
         return (name, offset, None)
@@ -156,25 +156,25 @@ class PackIndex(object):
                 self._unpack_crc32_checksum(i))
 
   def _unpack_name(self, i):
-    if self._version == 1:
+    if self.version == 1:
         return self._unpack_entry(i)[0]
     else:
         return struct.unpack_from("20s", self._contents, 
-                                  self._name_table_offset + i * 20)
+                                  self._name_table_offset + i * 20)[0]
 
   def _unpack_offset(self, i):
-    if self._version == 1:
+    if self.version == 1:
         return self._unpack_entry(i)[1]
     else:
         return struct.unpack_from(">L", self._contents, 
-                                  self._pack_offset_table_offset + i * 4)
+                                  self._pack_offset_table_offset + i * 4)[0]
 
   def _unpack_crc32_checksum(self, i):
-    if self._version == 1:
+    if self.version == 1:
         return None
     else:
         return struct.unpack_from(">L", self._contents, 
-                                  self._crc32_table_offset + i * 4)
+                                  self._crc32_table_offset + i * 4)[0]
 
   def iterentries(self):
     """Iterate over the entries in this pack index.

+ 3 - 0
dulwich/tests/test_pack.py

@@ -131,6 +131,7 @@ class TestPackIndexWriting(object):
         my_entries = [('og\x0c\x0f\xb5?\x94cv\x0br\x95\xfb\xb8\x14\xe9e\xfb \xc8', 178, 42)]
         self._write_fn("single.idx", my_entries, pack_checksum)
         idx = PackIndex("single.idx")
+        self.assertEquals(idx.version, self._expected_version)
         self.assertTrue(idx.check())
         self.assertEquals(idx.get_stored_checksums()[0], pack_checksum)
         self.assertEquals(1, len(idx))
@@ -150,6 +151,7 @@ class TestPackIndexWritingv1(unittest.TestCase, TestPackIndexWriting):
     def setUp(self):
         unittest.TestCase.setUp(self)
         self._has_crc32_checksum = False
+        self._expected_version = 1
         self._write_fn = write_pack_index_v1
 
 
@@ -158,4 +160,5 @@ class TestPackIndexWritingv2(unittest.TestCase, TestPackIndexWriting):
     def setUp(self):
         unittest.TestCase.setUp(self)
         self._has_crc32_checksum = True
+        self._expected_version = 2
         self._write_fn = write_pack_index_v2