]> granicus.if.org Git - python/commitdiff
Replace noop constant statement with expression
authorVictor Stinner <victor.stinner@gmail.com>
Mon, 8 Feb 2016 16:57:02 +0000 (17:57 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Mon, 8 Feb 2016 16:57:02 +0000 (17:57 +0100)
* 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.

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

index 422a3d60f2f9af421239ffe1d95cafce27848df0..98d596e5e43938350f982ab81120a94e31c6e166 100644 (file)
@@ -401,7 +401,7 @@ class TestRetrievingSourceCode(GetSourceBase):
         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:
index 41e5091fabd18d4c81fe362947ac09d301c55073..b0336407c3b297572653a2d3920a5f2820ae45c9 100644 (file)
@@ -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 @@ class TestTranforms(BytecodeTestCase):
 
     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)
 
index f86ea918e16f061b1ee8c1ac1d3fef93241614cd..269d9bf2b6b4258137587f888f44f982ca423664 100644 (file)
@@ -230,7 +230,8 @@ class TestSupport(unittest.TestCase):
 
     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
index ae8f845ee1bdab1dbc29370636e3c6186163a995..bb836233e1a0c84a1c36d47734c870af78e889ca 100644 (file)
@@ -338,8 +338,8 @@ class TraceTestCase(unittest.TestCase):
 
     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,
index b7695d6eb4ba8816f2b7232b8bf53ab512210e49..2f739ba7033a500961765dc1bf05310003e491ed 100644 (file)
@@ -129,12 +129,12 @@ class SyntaxTracebackCases(unittest.TestCase):
         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 @@ class SyntaxTracebackCases(unittest.TestCase):
             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