Commit e80e806b authored by Zachary Ware's avatar Zachary Ware

Issue #19938: Re-enabled test_bug_1333982 in test_dis, which had been

disabled since 3.0 due to the changes in listcomp handling.
parent a1de9063
...@@ -6,6 +6,7 @@ import unittest ...@@ -6,6 +6,7 @@ import unittest
import sys import sys
import dis import dis
import io import io
import re
class _C: class _C:
def __init__(self, x): def __init__(self, x):
...@@ -89,26 +90,25 @@ def bug1333982(x=[]): ...@@ -89,26 +90,25 @@ def bug1333982(x=[]):
dis_bug1333982 = """\ dis_bug1333982 = """\
%-4d 0 LOAD_CONST 1 (0) %-4d 0 LOAD_CONST 1 (0)
3 JUMP_IF_TRUE 33 (to 39) 3 POP_JUMP_IF_TRUE 35
6 POP_TOP 6 LOAD_GLOBAL 0 (AssertionError)
7 LOAD_GLOBAL 0 (AssertionError) 9 LOAD_CONST 2 (<code object <listcomp> at 0x..., file "%s", line %d>)
10 BUILD_LIST 0 12 LOAD_CONST 3 ('bug1333982.<locals>.<listcomp>')
13 LOAD_FAST 0 (x) 15 MAKE_FUNCTION 0
16 GET_ITER 18 LOAD_FAST 0 (x)
>> 17 FOR_ITER 12 (to 32) 21 GET_ITER
20 STORE_FAST 1 (s) 22 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
23 LOAD_FAST 1 (s)
26 LIST_APPEND 2 %-4d 25 LOAD_CONST 4 (1)
29 JUMP_ABSOLUTE 17 28 BINARY_ADD
29 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
%-4d >> 32 LOAD_CONST 2 (1) 32 RAISE_VARARGS 1
35 BINARY_ADD
36 RAISE_VARARGS 2 %-4d >> 35 LOAD_CONST 0 (None)
>> 39 POP_TOP 38 RETURN_VALUE
%-4d 40 LOAD_CONST 0 (None)
43 RETURN_VALUE
""" % (bug1333982.__code__.co_firstlineno + 1, """ % (bug1333982.__code__.co_firstlineno + 1,
__file__,
bug1333982.__code__.co_firstlineno + 1,
bug1333982.__code__.co_firstlineno + 2, bug1333982.__code__.co_firstlineno + 2,
bug1333982.__code__.co_firstlineno + 3) bug1333982.__code__.co_firstlineno + 3)
...@@ -193,8 +193,13 @@ class DisTests(unittest.TestCase): ...@@ -193,8 +193,13 @@ class DisTests(unittest.TestCase):
def do_disassembly_test(self, func, expected): def do_disassembly_test(self, func, expected):
lines = self.get_disassembly(func) lines = self.get_disassembly(func)
expected = expected.splitlines() expected = expected.splitlines()
if expected != lines: if expected == lines:
self.fail( return
else:
lines = [re.sub('0x[0-9A-Fa-f]+', '0x...', l) for l in lines]
if expected == lines:
return
self.fail(
"events did not match expectation:\n" + "events did not match expectation:\n" +
"\n".join(difflib.ndiff(expected, "\n".join(difflib.ndiff(expected,
lines))) lines)))
...@@ -217,18 +222,13 @@ class DisTests(unittest.TestCase): ...@@ -217,18 +222,13 @@ class DisTests(unittest.TestCase):
def test_bug_708901(self): def test_bug_708901(self):
self.do_disassembly_test(bug708901, dis_bug708901) 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): def test_bug_1333982(self):
# XXX: re-enable this test!
# This one is checking bytecodes generated for an `assert` statement, # This one is checking bytecodes generated for an `assert` statement,
# so fails if the tests are run with -O. Skip this test then. # 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 test_big_linenos(self):
def func(count): def func(count):
...@@ -451,8 +451,5 @@ class CodeInfoTests(unittest.TestCase): ...@@ -451,8 +451,5 @@ class CodeInfoTests(unittest.TestCase):
self.assertEqual(dis.pretty_flags(0), '0x0') self.assertEqual(dis.pretty_flags(0), '0x0')
def test_main():
run_unittest(DisTests, CodeInfoTests)
if __name__ == "__main__": if __name__ == "__main__":
test_main() unittest.main()
...@@ -182,6 +182,9 @@ IDLE ...@@ -182,6 +182,9 @@ IDLE
Tests Tests
----- -----
- Issue #19938: Re-enabled test_bug_1333982 in test_dis, which had been
disabled since 3.0 due to the changes in listcomp handling.
- Issue #19320: test_tcl no longer fails when wantobjects is false. - Issue #19320: test_tcl no longer fails when wantobjects is false.
- Issue #19683: Removed empty tests from test_minidom. Patch by Ajitesh Gupta. - Issue #19683: Removed empty tests from test_minidom. Patch by Ajitesh Gupta.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment