From: Dave Borowitz <[email protected]>

Change-Id: I5c58fcc1ba7910d7eba7d746f92128aca5feb044
---
 dulwich/tests/test_pack.py |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/dulwich/tests/test_pack.py b/dulwich/tests/test_pack.py
index 660450a..59445f2 100644
--- a/dulwich/tests/test_pack.py
+++ b/dulwich/tests/test_pack.py
@@ -378,6 +378,31 @@ class TestPack(PackTests):
         p = self.get_pack(pack1_sha)
         self.assertEquals(pack1_sha, p.name())
 
+    def test_length_mismatch(self):
+        data = self.get_pack_data(pack1_sha)
+        index = self.get_pack_index(pack1_sha)
+        self.assertTrue(Pack.from_objects(data, index).data)
+
+        data._file.seek(12)
+        bad_file = StringIO()
+        write_pack_header(bad_file, 9999)
+        bad_file.write(data._file.read())
+        bad_file = StringIO(bad_file.getvalue())
+        bad_data = PackData('', file=bad_file)
+        bad_pack = Pack.from_lazy_objects(lambda: bad_data, lambda: index)
+        self.assertRaises(AssertionError, lambda: bad_pack.data)
+
+    def test_checksum_mismatch(self):
+        data = self.get_pack_data(pack1_sha)
+        index = self.get_pack_index(pack1_sha)
+        self.assertTrue(Pack.from_objects(data, index).data)
+
+        data._file.seek(0)
+        bad_file = StringIO(data._file.read()[:-20] + ('\xff' * 20))
+        bad_data = PackData('', file=bad_file)
+        bad_pack = Pack.from_lazy_objects(lambda: bad_data, lambda: index)
+        self.assertRaises(ChecksumMismatch, lambda: bad_pack.data)
+
 
 class WritePackTests(TestCase):
 
-- 
1.7.3.1


_______________________________________________
Mailing list: https://launchpad.net/~dulwich-users
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~dulwich-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to