Skip to content

Commit de32347

Browse files
committed
Make sure test_compile pass with all optimization levels
1 parent b6b99bf commit de32347

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

Lib/test/test_compile.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -583,18 +583,18 @@ def test_compile_ast(self):
583583
with open(fname, encoding='utf-8') as f:
584584
fcontents = f.read()
585585
sample_code = [
586-
['<assign>', 'x = 5'],
587-
['<ifblock>', """if True:\n pass\n"""],
588-
['<forblock>', """for n in [1, 2, 3]:\n print(n)\n"""],
589-
['<deffunc>', """def foo():\n pass\nfoo()\n"""],
590-
[fname, fcontents],
586+
[2, '<assign>', 'x = 5'],
587+
[2, '<ifblock>', """if True:\n pass\n"""],
588+
[1, '<forblock>', """for n in [1, 2, 3]:\n print(n)\n"""],
589+
[1, '<deffunc>', """def foo():\n pass\nfoo()\n"""],
590+
[0, fname, fcontents],
591591
]
592592

593-
for fname, code in sample_code:
594-
co1 = compile(code, '%s1' % fname, 'exec')
595-
ast = compile(code, '%s2' % fname, 'exec', _ast.PyCF_ONLY_AST)
593+
for optval, fname, code in sample_code:
594+
co1 = compile(code, '%s1' % fname, 'exec', optimize=optval)
595+
ast = compile(code, '%s2' % fname, 'exec', _ast.PyCF_ONLY_AST, optimize=optval)
596596
self.assertTrue(type(ast) == _ast.Module)
597-
co2 = compile(ast, '%s3' % fname, 'exec')
597+
co2 = compile(ast, '%s3' % fname, 'exec', optimize=optval)
598598
self.assertEqual(co1, co2)
599599
# the code object's filename comes from the second compilation step
600600
self.assertEqual(co2.co_filename, '%s3' % fname)
@@ -823,8 +823,9 @@ def f():
823823
else:
824824
return "unused"
825825

826-
self.assertEqual(f.__code__.co_consts,
827-
(f.__doc__, "used"))
826+
if f.__doc__ is None:
827+
self.skipTest("-OO mode: docstring removed")
828+
self.assertEqual(f.__code__.co_consts, expected_consts)
828829

829830
@support.cpython_only
830831
def test_remove_unused_consts_no_docstring(self):
@@ -869,6 +870,9 @@ def test_strip_unused_None(self):
869870
def f1():
870871
"docstring"
871872
return 42
873+
874+
if f1.__doc__ is None:
875+
self.skipTest("-OO mode: docstring removed")
872876
self.assertEqual(f1.__code__.co_consts, (f1.__doc__,))
873877

874878
# This is a regression test for a CPython specific peephole optimizer

0 commit comments

Comments
 (0)