Force hashes to unsigned when comparing.
authorJelmer Vernooij <jelmer@jelmer.uk>
Sat, 17 Nov 2018 17:09:57 +0000 (17:09 +0000)
committerJelmer Vernooij <jelmer@jelmer.uk>
Sat, 17 Nov 2018 17:09:57 +0000 (17:09 +0000)
dulwich/tests/test_diff_tree.py

index 162b0738b800672b8b70981092ff266c72cca3a7..8498a29011333bc0694fabd7fb6782034858e585 100644 (file)
@@ -493,8 +493,7 @@ class RenameDetectionTest(DiffTestCase):
 
     def _do_test_count_blocks(self, count_blocks):
         blob = make_object(Blob, data=b'a\nb\na\n')
-        self.assertEqual({hash(b'a\n'): 4, hash(b'b\n'): 2},
-                         count_blocks(blob))
+        self.assertBlockCountEqual({b'a\n': 4, b'b\n': 2}, count_blocks(blob))
 
     test_count_blocks = functest_builder(_do_test_count_blocks,
                                          _count_blocks_py)
@@ -503,17 +502,21 @@ class RenameDetectionTest(DiffTestCase):
 
     def _do_test_count_blocks_no_newline(self, count_blocks):
         blob = make_object(Blob, data=b'a\na')
-        self.assertEqual({hash(b'a\n'): 2, hash(b'a'): 1}, _count_blocks(blob))
+        self.assertBlockCountEqual({b'a\n': 2, b'a': 1}, _count_blocks(blob))
 
     test_count_blocks_no_newline = functest_builder(
         _do_test_count_blocks_no_newline, _count_blocks_py)
     test_count_blocks_no_newline_extension = ext_functest_builder(
         _do_test_count_blocks_no_newline, _count_blocks)
 
+    def assertBlockCountEqual(self, expected, got):
+        self.assertEqual(
+            {(hash(l) & 0xffffffff): c for (l, c) in expected.items()},
+            {(h & 0xffffffff): c for (h, c) in got.items()})
+
     def _do_test_count_blocks_chunks(self, count_blocks):
         blob = ShaFile.from_raw_chunks(Blob.type_num, [b'a\nb', b'\na\n'])
-        self.assertEqual({hash(b'a\n'): 4, hash(b'b\n'): 2},
-                         _count_blocks(blob))
+        self.assertBlockCountEqual({b'a\n': 4, b'b\n': 2}, _count_blocks(blob))
 
     test_count_blocks_chunks = functest_builder(_do_test_count_blocks_chunks,
                                                 _count_blocks_py)
@@ -524,9 +527,12 @@ class RenameDetectionTest(DiffTestCase):
         a = b'a' * 64
         data = a + b'xxx\ny\n' + a + b'zzz\n'
         blob = make_object(Blob, data=data)
-        self.assertEqual({hash(b'a' * 64): 128, hash(b'xxx\n'): 4,
-                          hash(b'y\n'): 2, hash(b'zzz\n'): 4},
-                         _count_blocks(blob))
+        self.assertBlockCountEqual(
+            {b'a' * 64: 128,
+             b'xxx\n': 4,
+             b'y\n': 2,
+             b'zzz\n': 4},
+            _count_blocks(blob))
 
     test_count_blocks_long_lines = functest_builder(
         _do_test_count_blocks_long_lines, _count_blocks_py)