(original) (raw)
changeset: 100191:bcf27fa55632 user: Victor Stinner victor.stinner@gmail.com date: Mon Feb 08 17:57:02 2016 +0100 files: Lib/test/test_inspect.py Lib/test/test_peepholer.py Lib/test/test_support.py Lib/test/test_sys_settrace.py Lib/test/test_traceback.py description: Replace noop constant statement with expression * Constant statements will be ignored and the compiler will emit a SyntaxWarning. * Replace constant statement (ex: "1") with an expression statement (ex: "x=1"). * test_traceback: use context manager on the file. Issue #26204. diff -r a0d053899ff8 -r bcf27fa55632 Lib/test/test_inspect.py --- a/Lib/test/test_inspect.py Mon Feb 08 17:15:21 2016 +0100 +++ b/Lib/test/test_inspect.py Mon Feb 08 17:57:02 2016 +0100 @@ -401,7 +401,7 @@ self.assertEqual(normcase(inspect.getsourcefile(mod.spam)), modfile) self.assertEqual(normcase(inspect.getsourcefile(git.abuse)), modfile) fn = "_non_existing_filename_used_for_sourcefile_test.py" - co = compile("None", fn, "exec") + co = compile("x=1", fn, "exec") self.assertEqual(inspect.getsourcefile(co), None) linecache.cache[co.co_filename] = (1, None, "None", co.co_filename) try: diff -r a0d053899ff8 -r bcf27fa55632 Lib/test/test_peepholer.py --- a/Lib/test/test_peepholer.py Mon Feb 08 17:15:21 2016 +0100 +++ b/Lib/test/test_peepholer.py Mon Feb 08 17:57:02 2016 +0100 @@ -1,9 +1,8 @@ import dis import re import sys -from io import StringIO +import textwrap import unittest -from math import copysign from test.bytecode_helper import BytecodeTestCase @@ -30,22 +29,25 @@ def test_global_as_constant(self): # LOAD_GLOBAL None/True/False --> LOAD_CONST None/True/False - def f(x): - None - None + def f(): + x = None + x = None return x - def g(x): - True + def g(): + x = True return x - def h(x): - False + def h(): + x = False return x + for func, elem in ((f, None), (g, True), (h, False)): self.assertNotInBytecode(func, 'LOAD_GLOBAL') self.assertInBytecode(func, 'LOAD_CONST', elem) + def f(): 'Adding a docstring made this test fail in Py2.5.0' return None + self.assertNotInBytecode(f, 'LOAD_GLOBAL') self.assertInBytecode(f, 'LOAD_CONST', None) diff -r a0d053899ff8 -r bcf27fa55632 Lib/test/test_support.py --- a/Lib/test/test_support.py Mon Feb 08 17:15:21 2016 +0100 +++ b/Lib/test/test_support.py Mon Feb 08 17:57:02 2016 +0100 @@ -230,7 +230,8 @@ def test_check_syntax_error(self): support.check_syntax_error(self, "def class") - self.assertRaises(AssertionError, support.check_syntax_error, self, "1") + with self.assertRaises(AssertionError): + support.check_syntax_error(self, "x=1") def test_CleanImport(self): import importlib diff -r a0d053899ff8 -r bcf27fa55632 Lib/test/test_sys_settrace.py --- a/Lib/test/test_sys_settrace.py Mon Feb 08 17:15:21 2016 +0100 +++ b/Lib/test/test_sys_settrace.py Mon Feb 08 17:57:02 2016 +0100 @@ -338,8 +338,8 @@ def test_14_onliner_if(self): def onliners(): - if True: False - else: True + if True: x=False + else: x=True return 0 self.run_and_compare( onliners, diff -r a0d053899ff8 -r bcf27fa55632 Lib/test/test_traceback.py --- a/Lib/test/test_traceback.py Mon Feb 08 17:15:21 2016 +0100 +++ b/Lib/test/test_traceback.py Mon Feb 08 17:57:02 2016 +0100 @@ -129,12 +129,12 @@ def do_test(firstlines, message, charset, lineno): # Raise the message in a subprocess, and catch the output try: - output = open(TESTFN, "w", encoding=charset) - output.write("""{0}if 1: - import traceback; - raise RuntimeError('{1}') - """.format(firstlines, message)) - output.close() + with open(TESTFN, "w", encoding=charset) as output: + output.write("""{0}if 1: + import traceback; + raise RuntimeError('{1}') + """.format(firstlines, message)) + process = subprocess.Popen([sys.executable, TESTFN], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) stdout, stderr = process.communicate() @@ -176,7 +176,7 @@ do_test(" \t\f\n# coding: {0}\n".format(charset), text, charset, 5) # Issue #18960: coding spec should has no effect - do_test("0\n# coding: GBK\n", "h\xe9 ho", 'utf-8', 5) + do_test("x=0\n# coding: GBK\n", "h\xe9 ho", 'utf-8', 5) def test_print_traceback_at_exit(self): # Issue #22599: Ensure that it is possible to use the traceback module /victor.stinner@gmail.com