Kiln » Dependencies » Dulwich Read More
Clone URL:  
Pushed to one repository · View In Graph Contained in master

add a test for reading and writing large offsets into index files

Changeset 320d6e8e7c2e

Parent fd9f85cc0d9b

by Jameson Nash

Changes to 2 files · Browse files at 320d6e8e7c2e Showing diff from parent fd9f85cc0d9b Diff from another changeset...

Change 1 of 2 Show Entire File dulwich/​pack.py Stacked
 
629
630
631
632
633
 
 
634
635
636
 
1723
1724
1725
1726
 
1727
1728
1729
 
1730
1731
1732
 
629
630
631
 
 
632
633
634
635
636
 
1723
1724
1725
 
1726
1727
1728
 
1729
1730
1731
1732
@@ -629,8 +629,8 @@
  def _unpack_offset(self, i):   offset = self._pack_offset_table_offset + i * 4   offset = unpack_from('>L', self._contents, offset)[0] - if (offset&0x80000000): - offset = self._pack_offset_largetable_offset + (offset&0x7fffffff) * 8 + if (offset&(2**31)): + offset = self._pack_offset_largetable_offset + (offset&(2**31-1)) * 8L   offset = unpack_from('>Q', self._contents, offset)[0]   return offset   @@ -1723,10 +1723,10 @@
  for (name, offset, entry_checksum) in entries:   f.write(struct.pack('>L', entry_checksum))   for (name, offset, entry_checksum) in entries: - if offset < 0x80000000: + if offset < 2**31:   f.write(struct.pack('>L', offset))   else: - f.write(struct.pack('>L', 0x80000000 + len(largetable))) + f.write(struct.pack('>L', 2**31 + len(largetable)))   largetable.append(offset)   for offset in largetable:   f.write(struct.pack('>Q', offset))
 
479
480
481
 
 
 
 
 
482
483
484
 
485
486
487
 
479
480
481
482
483
484
485
486
487
488
 
489
490
491
492
@@ -479,9 +479,14 @@
  def test_single(self):   entry_sha = hex_to_sha('6f670c0fb53f9463760b7295fbb814e965fb20c8')   my_entries = [(entry_sha, 178, 42)] + if self._has_crc32_checksum: + entry_sha = hex_to_sha('4e6388232ec39792661e2e75db8fb117fc869ce6') + my_entries.append([entry_sha, 0xf2972d0830529b87, 24]) + entry_sha = hex_to_sha('e98f071751bd77f59967bfa671cd2caebdccc9a2') + my_entries.append([entry_sha, (~0xf2972d0830529b87)&(2**64-1), 92])   idx = self.index('single.idx', my_entries, pack_checksum)   self.assertEqual(idx.get_pack_checksum(), pack_checksum) - self.assertEqual(1, len(idx)) + self.assertEqual(len(my_entries), len(idx))   actual_entries = list(idx.iterentries())   self.assertEqual(len(my_entries), len(actual_entries))   for mine, actual in zip(my_entries, actual_entries):