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

pack: Split testing of large pack index files into separate test.

Changeset 84010d1db06f

Parent 320d6e8e7c2e

by Jelmer Vernooij

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

Change 1 of 2 Show Entire File dulwich/​pack.py Stacked
 
629
630
631
632
 
633
634
635
 
1566
1567
1568
1569
 
 
1570
1571
1572
 
629
630
631
 
632
633
634
635
 
1566
1567
1568
 
1569
1570
1571
1572
1573
@@ -629,7 +629,7 @@
  def _unpack_offset(self, i):   offset = self._pack_offset_table_offset + i * 4   offset = unpack_from('>L', self._contents, offset)[0] - if (offset&(2**31)): + 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 @@ -1566,7 +1566,8 @@
  f.write(struct.pack('>L', fan_out_table[i]))   fan_out_table[i+1] += fan_out_table[i]   for (name, offset, entry_checksum) in entries: - assert offset <= 0xffffffff + if not (offset <= 0xffffffff): + raise TypeError("pack format 1 only supports offsets < 2Gb")   f.write(struct.pack('>L20s', offset, name))   assert len(pack_checksum) == 20   f.write(pack_checksum)
 
476
477
478
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
479
480
481
482
483
484
485
486
487
488
489
 
490
491
492
 
530
531
532
 
533
534
535
 
545
546
547
 
548
549
550
 
558
559
560
 
561
562
563
 
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
 
 
 
 
 
506
507
 
508
509
510
511
 
549
550
551
552
553
554
555
 
565
566
567
568
569
570
571
 
579
580
581
582
583
584
585
@@ -476,17 +476,36 @@
  self.assertEqual(idx.get_pack_checksum(), pack_checksum)   self.assertEqual(0, len(idx))   + def test_large(self): + entry1_sha = hex_to_sha('4e6388232ec39792661e2e75db8fb117fc869ce6') + entry2_sha = hex_to_sha('e98f071751bd77f59967bfa671cd2caebdccc9a2') + entries = [(entry1_sha, 0xf2972d0830529b87, 24), + (entry2_sha, (~0xf2972d0830529b87)&(2**64-1), 92)] + if not self._supports_large: + self.assertRaises(TypeError, self.index, 'single.idx', + entries, pack_checksum) + return + idx = self.index('single.idx', entries, pack_checksum) + self.assertEqual(idx.get_pack_checksum(), pack_checksum) + self.assertEqual(2, len(idx)) + actual_entries = list(idx.iterentries()) + self.assertEqual(len(entries), len(actual_entries)) + for mine, actual in zip(entries, actual_entries): + my_sha, my_offset, my_crc = mine + actual_sha, actual_offset, actual_crc = actual + self.assertEqual(my_sha, actual_sha) + self.assertEqual(my_offset, actual_offset) + if self._has_crc32_checksum: + self.assertEqual(my_crc, actual_crc) + else: + self.assertTrue(actual_crc is None) +   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(len(my_entries), len(idx)) + self.assertEqual(1, len(idx))   actual_entries = list(idx.iterentries())   self.assertEqual(len(my_entries), len(actual_entries))   for mine, actual in zip(my_entries, actual_entries): @@ -530,6 +549,7 @@
  def setUp(self):   TestCase.setUp(self)   self._has_crc32_checksum = True + self._supports_large = True     def index(self, filename, entries, pack_checksum):   return MemoryPackIndex(entries, pack_checksum) @@ -545,6 +565,7 @@
  BaseTestFilePackIndexWriting.setUp(self)   self._has_crc32_checksum = False   self._expected_version = 1 + self._supports_large = False   self._write_fn = write_pack_index_v1     def tearDown(self): @@ -558,6 +579,7 @@
  TestCase.setUp(self)   BaseTestFilePackIndexWriting.setUp(self)   self._has_crc32_checksum = True + self._supports_large = True   self._expected_version = 2   self._write_fn = write_pack_index_v2