From 41c4cee4170097577c4499d5b120597c8c3d4b32 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Mon, 1 Sep 2025 14:25:31 +0200 Subject: [PATCH 1/3] Add tests to increase coverage of hash of multi-digit ints --- Lib/test/test_long.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index f336d49fa4f008..417b88af2e0d76 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -1693,5 +1693,21 @@ class MyInt(int): # GH-117195 -- This shouldn't crash object.__sizeof__(1) + def test_hash(self): + # gh-136599 + self.assertEqual(hash(-1), -2) + self.assertEqual(hash(0), 0) + self.assertEqual(hash(10), 10) + + self.assertEqual(hash(sys.hash_info.modulus - 2), sys.hash_info.modulus - 2) + self.assertEqual(hash(sys.hash_info.modulus - 1), sys.hash_info.modulus - 1) + self.assertEqual(hash(sys.hash_info.modulus), 0) + self.assertEqual(hash(sys.hash_info.modulus + 1), 1) + + self.assertEqual(hash(-sys.hash_info.modulus - 2), -2) + self.assertEqual(hash(-sys.hash_info.modulus - 1), -2) + self.assertEqual(hash(-sys.hash_info.modulus), 0) + self.assertEqual(hash(-sys.hash_info.modulus + 1), - (sys.hash_info.modulus - 1)) + if __name__ == "__main__": unittest.main() From f2e26267d8716e24b6b9c5d2ddff224a3ba583b0 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Mon, 1 Sep 2025 14:28:47 +0200 Subject: [PATCH 2/3] Update Lib/test/test_long.py --- Lib/test/test_long.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index 417b88af2e0d76..581b040b21bd92 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -1707,7 +1707,7 @@ def test_hash(self): self.assertEqual(hash(-sys.hash_info.modulus - 2), -2) self.assertEqual(hash(-sys.hash_info.modulus - 1), -2) self.assertEqual(hash(-sys.hash_info.modulus), 0) - self.assertEqual(hash(-sys.hash_info.modulus + 1), - (sys.hash_info.modulus - 1)) + self.assertEqual(hash(-sys.hash_info.modulus + 1), -sys.hash_info.modulus + 1)) if __name__ == "__main__": unittest.main() From aa2a3a15b16e2bd96b8a021e509d5a869559a0e2 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Mon, 1 Sep 2025 14:45:16 +0200 Subject: [PATCH 3/3] Update Lib/test/test_long.py Co-authored-by: Sergey B Kirpichev --- Lib/test/test_long.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index 581b040b21bd92..d63bc19ed9c9a2 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -1707,7 +1707,7 @@ def test_hash(self): self.assertEqual(hash(-sys.hash_info.modulus - 2), -2) self.assertEqual(hash(-sys.hash_info.modulus - 1), -2) self.assertEqual(hash(-sys.hash_info.modulus), 0) - self.assertEqual(hash(-sys.hash_info.modulus + 1), -sys.hash_info.modulus + 1)) + self.assertEqual(hash(-sys.hash_info.modulus + 1), -sys.hash_info.modulus + 1) if __name__ == "__main__": unittest.main()