[Python-3000-checkins] r61991 - in python/branches/py3k: Lib/lib2to3 Lib/lib2to3/fixes/fix_except.py Lib/lib2to3/tests/test_all_fixers.py Lib/lib2to3/tests/test_fixers.py Lib/test/test_lib2to3.py

martin.v.loewis python-3000-checkins at python.org
Fri Mar 28 06:30:15 CET 2008


Author: martin.v.loewis
Date: Fri Mar 28 06:29:57 2008
New Revision: 61991

Added:
   python/branches/py3k/Lib/test/test_lib2to3.py
      - copied unchanged from r61990, python/trunk/Lib/test/test_lib2to3.py
Modified:
   python/branches/py3k/   (props changed)
   python/branches/py3k/Lib/lib2to3/   (props changed)
   python/branches/py3k/Lib/lib2to3/fixes/fix_except.py
   python/branches/py3k/Lib/lib2to3/tests/test_all_fixers.py
   python/branches/py3k/Lib/lib2to3/tests/test_fixers.py
Log:
Merged revisions 61988-61990 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk

................
  r61988 | martin.v.loewis | 2008-03-28 06:25:36 +0100 (Fr, 28 Mär 2008) | 2 lines
  
  Disable test that depends on #2412 being fixed.
................
  r61989 | martin.v.loewis | 2008-03-28 06:26:10 +0100 (Fr, 28 Mär 2008) | 2 lines
  
  Run 2to3 tests.
................
  r61990 | martin.v.loewis | 2008-03-28 06:27:44 +0100 (Fr, 28 Mär 2008) | 13 lines
  
  Merged revisions 61825-61989 via svnmerge from 
  svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
  
  ........
    r61899 | collin.winter | 2008-03-25 17:53:41 +0100 (Di, 25 Mär 2008) | 1 line
    
    Add a missing explicit fixer to test_all_fixers.
  ........
    r61983 | collin.winter | 2008-03-28 03:19:46 +0100 (Fr, 28 Mär 2008) | 2 lines
    
    Fix http://bugs.python.org/issue2453: support empty excepts in fix_except.
  ........
................


Modified: python/branches/py3k/Lib/lib2to3/fixes/fix_except.py
==============================================================================
--- python/branches/py3k/Lib/lib2to3/fixes/fix_except.py	(original)
+++ python/branches/py3k/Lib/lib2to3/fixes/fix_except.py	Fri Mar 28 06:29:57 2008
@@ -37,15 +37,18 @@
 
     PATTERN = """
     try_stmt< 'try' ':' suite
-                  cleanup=((except_clause ':' suite)+ ['else' ':' suite]
-                                                      ['finally' ':' suite]
-                               | 'finally' ':' suite) >
+                  cleanup=(except_clause ':' suite)+
+                  tail=(['except' ':' suite]
+                        ['else' ':' suite]
+                        ['finally' ':' suite]) >
     """
 
     def transform(self, node, results):
         syms = self.syms
 
-        try_cleanup = [ch.clone() for ch in results['cleanup']]
+        tail = [n.clone() for n in results["tail"]]
+
+        try_cleanup = [ch.clone() for ch in results["cleanup"]]
         for except_clause, e_suite in find_excepts(try_cleanup):
             if len(except_clause.children) == 4:
                 (E, comma, N) = except_clause.children[1:4]
@@ -85,5 +88,5 @@
                     N.set_prefix(" ")
 
         #TODO(cwinter) fix this when children becomes a smart list
-        children = [c.clone() for c in node.children[:3]] + try_cleanup
+        children = [c.clone() for c in node.children[:3]] + try_cleanup + tail
         return pytree.Node(node.type, children)

Modified: python/branches/py3k/Lib/lib2to3/tests/test_all_fixers.py
==============================================================================
--- python/branches/py3k/Lib/lib2to3/tests/test_all_fixers.py	(original)
+++ python/branches/py3k/Lib/lib2to3/tests/test_all_fixers.py	Fri Mar 28 06:29:57 2008
@@ -27,7 +27,7 @@
 
 class Test_all(support.TestCase):
     def setUp(self):
-        options = Options(fix=["all", "idioms", "ws_comma"],
+        options = Options(fix=["all", "idioms", "ws_comma", "buffer"],
                           print_function=False)
         self.refactor = refactor.RefactoringTool(options)
 

Modified: python/branches/py3k/Lib/lib2to3/tests/test_fixers.py
==============================================================================
--- python/branches/py3k/Lib/lib2to3/tests/test_fixers.py	(original)
+++ python/branches/py3k/Lib/lib2to3/tests/test_fixers.py	Fri Mar 28 06:29:57 2008
@@ -435,6 +435,8 @@
         #      is fixed so it won't crash when it sees print(x=y).
         #      When #2412 is fixed, the try/except block can be taken
         #      out and the tests can be run like normal.
+        # MvL: disable entirely for now, so that it doesn't print to stdout
+        return
         try:
             s = "from __future__ import print_function\n"\
                 "print('Hai!', end=' ')"
@@ -679,6 +681,72 @@
                 pass"""
         self.check(b, a)
 
+    def test_bare_except(self):
+        b = """
+            try:
+                pass
+            except Exception, a:
+                pass
+            except:
+                pass"""
+
+        a = """
+            try:
+                pass
+            except Exception as a:
+                pass
+            except:
+                pass"""
+        self.check(b, a)
+
+    def test_bare_except_and_else_finally(self):
+        b = """
+            try:
+                pass
+            except Exception, a:
+                pass
+            except:
+                pass
+            else:
+                pass
+            finally:
+                pass"""
+
+        a = """
+            try:
+                pass
+            except Exception as a:
+                pass
+            except:
+                pass
+            else:
+                pass
+            finally:
+                pass"""
+        self.check(b, a)
+
+    def test_multi_fixed_excepts_before_bare_except(self):
+        b = """
+            try:
+                pass
+            except TypeError, b:
+                pass
+            except Exception, a:
+                pass
+            except:
+                pass"""
+
+        a = """
+            try:
+                pass
+            except TypeError as b:
+                pass
+            except Exception as a:
+                pass
+            except:
+                pass"""
+        self.check(b, a)
+
     # These should not be touched:
 
     def test_unchanged_1(self):


More information about the Python-3000-checkins mailing list