summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_code.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2022-08-01 18:33:49 (GMT)
committerGitHub <noreply@github.com>2022-08-01 18:33:49 (GMT)
commit7baca3c05e16d1faeb8c77f07706b84677d97a3d (patch)
tree345cd1252a782ae2e44522c0a84c2fb4914d8d04 /Lib/test/test_code.py
parent76d83b1dfe4c7be04f51bbdb01f3b82df83f8958 (diff)
downloadcpython-7baca3c05e16d1faeb8c77f07706b84677d97a3d.zip
cpython-7baca3c05e16d1faeb8c77f07706b84677d97a3d.tar.gz
cpython-7baca3c05e16d1faeb8c77f07706b84677d97a3d.tar.bz2
GH-95150: Use position and exception tables for code hashing and equality (GH-95509)
(cherry picked from commit c7e5bbaee88a71dc6e633e3cd451ed1798436382) Co-authored-by: Brandt Bucher <brandtbucher@gmail.com>
Diffstat (limited to 'Lib/test/test_code.py')
-rw-r--r--Lib/test/test_code.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/Lib/test/test_code.py b/Lib/test/test_code.py
index fd68f6d..2386cf6 100644
--- a/Lib/test/test_code.py
+++ b/Lib/test/test_code.py
@@ -428,6 +428,27 @@ class CodeTest(unittest.TestCase):
self.assertIsNone(line)
self.assertEqual(end_line, new_code.co_firstlineno + 1)
+ def test_code_equality(self):
+ def f():
+ try:
+ a()
+ except:
+ b()
+ else:
+ c()
+ finally:
+ d()
+ code_a = f.__code__
+ code_b = code_a.replace(co_linetable=b"")
+ code_c = code_a.replace(co_exceptiontable=b"")
+ code_d = code_b.replace(co_exceptiontable=b"")
+ self.assertNotEqual(code_a, code_b)
+ self.assertNotEqual(code_a, code_c)
+ self.assertNotEqual(code_a, code_d)
+ self.assertNotEqual(code_b, code_c)
+ self.assertNotEqual(code_b, code_d)
+ self.assertNotEqual(code_c, code_d)
+
def isinterned(s):
return s is sys.intern(('_' + s + '_')[1:-1])