summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_dis.py
diff options
context:
space:
mode:
authorZachary Ware <zachary.ware@gmail.com>2013-12-26 15:55:24 (GMT)
committerZachary Ware <zachary.ware@gmail.com>2013-12-26 15:55:24 (GMT)
commitbb4b7c12fa63794743b3448184f7ba13266a4834 (patch)
treecdc51b7ce355d9e6faf728e1e3a99149e4538157 /Lib/test/test_dis.py
parent575fb3195517fc06ec664a1fbfcedf84a2d8ea3a (diff)
parente80e806b3a218799d93c33388f337bb898ced778 (diff)
downloadcpython-bb4b7c12fa63794743b3448184f7ba13266a4834.zip
cpython-bb4b7c12fa63794743b3448184f7ba13266a4834.tar.gz
cpython-bb4b7c12fa63794743b3448184f7ba13266a4834.tar.bz2
Issue #19938: Re-enabled test_bug_1333982 in test_dis, which had been
disabled since 3.0 due to the changes in listcomp handling.
Diffstat (limited to 'Lib/test/test_dis.py')
-rw-r--r--Lib/test/test_dis.py65
1 files changed, 31 insertions, 34 deletions
diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py
index eb6ac3c..d1229fb 100644
--- a/Lib/test/test_dis.py
+++ b/Lib/test/test_dis.py
@@ -7,6 +7,7 @@ import unittest
import sys
import dis
import io
+import re
import types
import contextlib
@@ -106,27 +107,26 @@ def bug1333982(x=[]):
pass
dis_bug1333982 = """\
- %-4d 0 LOAD_CONST 1 (0)
- 3 JUMP_IF_TRUE 33 (to 39)
- 6 POP_TOP
- 7 LOAD_GLOBAL 0 (AssertionError)
- 10 BUILD_LIST 0
- 13 LOAD_FAST 0 (x)
- 16 GET_ITER
- >> 17 FOR_ITER 12 (to 32)
- 20 STORE_FAST 1 (s)
- 23 LOAD_FAST 1 (s)
- 26 LIST_APPEND 2
- 29 JUMP_ABSOLUTE 17
-
- %-4d >> 32 LOAD_CONST 2 (1)
- 35 BINARY_ADD
- 36 RAISE_VARARGS 2
- >> 39 POP_TOP
-
- %-4d 40 LOAD_CONST 0 (None)
- 43 RETURN_VALUE
+%3d 0 LOAD_CONST 1 (0)
+ 3 POP_JUMP_IF_TRUE 35
+ 6 LOAD_GLOBAL 0 (AssertionError)
+ 9 LOAD_CONST 2 (<code object <listcomp> at 0x..., file "%s", line %d>)
+ 12 LOAD_CONST 3 ('bug1333982.<locals>.<listcomp>')
+ 15 MAKE_FUNCTION 0
+ 18 LOAD_FAST 0 (x)
+ 21 GET_ITER
+ 22 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
+
+%3d 25 LOAD_CONST 4 (1)
+ 28 BINARY_ADD
+ 29 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
+ 32 RAISE_VARARGS 1
+
+%3d >> 35 LOAD_CONST 0 (None)
+ 38 RETURN_VALUE
""" % (bug1333982.__code__.co_firstlineno + 1,
+ __file__,
+ bug1333982.__code__.co_firstlineno + 1,
bug1333982.__code__.co_firstlineno + 2,
bug1333982.__code__.co_firstlineno + 3)
@@ -244,8 +244,14 @@ class DisTests(unittest.TestCase):
def get_disassemble_as_string(self, func, lasti=-1):
return self.get_disassembly(func, lasti, False)
+ def strip_addresses(self, text):
+ return re.sub(r'\b0x[0-9A-Fa-f]+\b', '0x...', text)
+
def do_disassembly_test(self, func, expected):
- self.assertEqual(self.get_disassembly(func), expected)
+ got = self.get_disassembly(func)
+ if got != expected:
+ got = self.strip_addresses(got)
+ self.assertEqual(got, expected)
def test_opmap(self):
self.assertEqual(dis.opmap["NOP"], 9)
@@ -265,18 +271,13 @@ class DisTests(unittest.TestCase):
def test_bug_708901(self):
self.do_disassembly_test(bug708901, dis_bug708901)
- # Test has been disabled due to change in the way
- # list comps are handled. The byte code now includes
- # a memory address and a file location, so they change from
- # run to run.
- @unittest.skip('disabled due to a change in the way list comps are handled')
def test_bug_1333982(self):
- # XXX: re-enable this test!
# This one is checking bytecodes generated for an `assert` statement,
# so fails if the tests are run with -O. Skip this test then.
+ if not __debug__:
+ self.skipTest('need asserts, run without -O')
- if __debug__:
- self.do_disassembly_test(bug1333982, dis_bug1333982)
+ self.do_disassembly_test(bug1333982, dis_bug1333982)
def test_big_linenos(self):
def func(count):
@@ -827,9 +828,5 @@ class BytecodeTests(unittest.TestCase):
b = dis.Bytecode.from_traceback(tb)
self.assertEqual(b.dis(), dis_traceback)
-def test_main():
- run_unittest(DisTests, DisWithFileTests, CodeInfoTests,
- InstructionTests, BytecodeTests)
-
if __name__ == "__main__":
- test_main()
+ unittest.main()