[pypy-svn] r5426 - pypy/trunk/src/pypy/tool

lac at codespeak.net lac at codespeak.net
Sat Jul 3 13:36:50 CEST 2004


Author: lac
Date: Sat Jul  3 13:36:49 2004
New Revision: 5426

Modified:
   pypy/trunk/src/pypy/tool/utestconvert.py
Log:
8 retunr locations for a function that almost fits on one screen is 
too many.  I knew I could get it down to something a little more reasonable...


Modified: pypy/trunk/src/pypy/tool/utestconvert.py
==============================================================================
--- pypy/trunk/src/pypy/tool/utestconvert.py	(original)
+++ pypy/trunk/src/pypy/tool/utestconvert.py	Sat Jul  3 13:36:49 2004
@@ -66,79 +66,60 @@
 def rewrite_utest(block):
     '''rewrite every block to use the new utest functions'''
 
-    '''This is the code that actually knows the format of the old
-       and new unittests.  The rewriting rules are picky with when
-       to add spaces, and commas, so there are unfortunately 8 exit
-       paths, all some form of 'return indent + new + string + trailer'
-
+    '''returns the rewritten unittest, unless it ran into problems,
+       in which case it just returns the block unchanged.
     '''
     utest = old_names.match(block)
 
-    if not utest:  # just copy uninteresting blocks that don't begin a utest
+    if not utest:
         return block
 
-    else: # we have an interesting block
-        old = utest.group(0).lstrip()[5:-1]
-        # old - the name we want to replace -- between the 'self.' and the '('
-
-        #  d is the dictionary of unittest changes, keyed to the old name
-        #  used by unittest.
-        #  d[old][0] is the new replacement function.
-        #  d[old][1] is the operator you will use , or '' if there is none.
-        #  d[old][2] is the possible number of arguments to the unittest
-        #  function.
-
-        new = d[old][0]
-        op  = d[old][1]
-        possible_args = d[old][2]
+    old = utest.group(0).lstrip()[5:-1] # the name we want to replace
+    new = d[old][0] # the name of the replacement function
+    op  = d[old][1] # the operator you will use , or '' if there is none.
+    possible_args = d[old][2]  # a list of the number of arguments the
+                               # unittest function could possibly take.
                 
-        if new == 'raises': # just rename assertRaises & friends
-            return re.sub('self.'+old, new, block)
-        else:
-            message_pos = possible_args[-1]
-            # the remaining unittests can have an optional message to
-            # print when they fail.  It is always the last argument to
-            # the function.
+    if new == 'raises': # just rename assertRaises & friends
+        return re.sub('self.'+old, new, block)
 
-        try:
-            indent, args, message, trailer = decompose_unittest(
-                old, block, message_pos)
-        except SyntaxError: # but we couldn't parse it!
-            return block
+    message_pos = possible_args[-1]
+    # the remaining unittests can have an optional message to print
+    # when they fail.  It is always the last argument to the function.
 
-        # otherwise, we have a real one that we could parse.
+    try:
+        indent, args, message, trailer = decompose_unittest(
+            old, block, message_pos)
+    except SyntaxError: # but we couldn't parse it!
+        return block
 
-        argnum = len(args)
-        if message:
-            argnum += 1
+    argnum = len(args)
+    if message:
+        argnum += 1
 
-        if argnum not in possible_args:
-            # sanity check - this one isn't real either
-            return block
+    if argnum not in possible_args:
+        # sanity check - this one isn't real either
+        return block
+
+    if argnum is 0 or (argnum is 1 and argnum is message_pos): #unittest fail()
+        string = ''
+        if message:
+            message = ' ' + message
 
-        if argnum is 0:  # fail()
-            return indent + new + trailer
+    elif message_pos is 4:  # assertAlmostEqual & friends
+        try:
+            pos = args[2].lstrip()
+        except IndexError:
+            pos = '7' # default if none is specified
+        string = '(%s -%s, %s)%s 0' % (args[0], args[1], pos, op )
 
-        elif argnum is 1 and argnum is message_pos: # fail('unhappy message')
-            return indent + new + ', ' + message + trailer
+    else: # assert_, assertEquals and all the rest
+        string = ' ' + op.join(args)
 
-        elif message_pos is 4:  # assertAlmostEqual and friends
-            try:
-                pos = args[2].lstrip()
-            except IndexError:
-                pos = '7' # default if none is specified
-            string = '(' + args[0] + ' -' + args[1] + ', ' + pos + ')'
-            string += op + ' 0'
-            if message:
-                string = string + ',' + message
-            return indent + new + string + trailer
-                
-        else: #assert_, assertEquals and all the rest
-            string = op.join(args)
-            if message:
-                string = string + ',' + message
+    if message:
+        string = string + ',' + message
 
-        return indent + new + ' ' + string + trailer
+    return indent + new + string + trailer
 
 def decompose_unittest(old, block, message_pos):
     '''decompose the block into its component parts'''
@@ -173,16 +154,16 @@
             # begins, you will need another set of parens, (or a backslash).
 
     if arglist:
-        newl = []
-        for arg in arglist:
+        for i in range(len(arglist)):
             try:
-                parser.expr(arg.lstrip('\t '))
+                parser.expr(arglist[i].lstrip('\t '))
                 # Again we want to enclose things that happen to have
                 # a linebreak just before the new arg.
             except SyntaxError:
-                arg = '(' + arg + ')'
-            newl.append(arg)
-        arglist = newl
+                if i == 0:
+                    arglist[i] = '(' + arglist[i] + ')'
+                else:
+                    arglist[i] = ' (' + arglist[i] + ')'
 
     return indent, arglist, message, trailer
 
@@ -258,12 +239,12 @@
                           "assert func(x) # XXX")
         
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assert_(1 + f(y)
                          + z) # multiline, keep parentheses
             """
             ),
-            r"""
+            """
             assert (1 + f(y)
                          + z) # multiline, keep parentheses
             """
@@ -317,19 +298,19 @@
             """
             ),
             r"""
-            assert 0 ==(
+            assert 0 == (
                  'Run away from the snake.\n')
             """
                           )
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assertEquals(badger + 0
                               + mushroom
                               + snake, 0)
             """
             ),
-            r"""
+            """
             assert (badger + 0
                               + mushroom
                               + snake) == 0
@@ -337,7 +318,7 @@
                           )
                             
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assertNotEquals(badger + 0
                               + mushroom
                               + snake,
@@ -345,25 +326,25 @@
                               - badger)
             """
             ),
-            r"""
+            """
             assert (badger + 0
                               + mushroom
-                              + snake) !=(
+                              + snake) != (
                               mushroom
                               - badger)
             """
                           )
 
         self.assertEqual(rewrite_utest(
-            r"""
+            """
             self.assertEquals(badger(),
                               mushroom()
                               + snake(mushroom)
                               - badger())
             """
             ),
-            r"""
-            assert badger() ==(
+            """
+            assert badger() == (
                               mushroom()
                               + snake(mushroom)
                               - badger())
@@ -376,7 +357,7 @@
                           "assert not 0 != 0")
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.failUnlessEqual(mushroom()
                                  + mushroom()
                                  + mushroom(), '''badger badger badger
@@ -385,7 +366,7 @@
                                  ''') # multiline, must move the parens
             """
             ),
-            r"""
+            """
             assert not (mushroom()
                                  + mushroom()
                                  + mushroom()) != '''badger badger badger
@@ -397,39 +378,39 @@
 
                                    
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assertEquals('''snake snake snake
                                  snake snake snake''', mushroom)
             """
             ),
-            r"""
+            """
             assert '''snake snake snake
                                  snake snake snake''' == mushroom
             """
                           )
         
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assertEquals(badger(),
                               snake(), 'BAD BADGER')
             """
             ),
-            r"""
-            assert badger() ==(
+            """
+            assert badger() == (
                               snake()), 'BAD BADGER'
             """
                           )
         
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assertNotEquals(badger(),
                               snake()+
                               snake(), 'POISONOUS MUSHROOM!\
                               Ai! I ate a POISONOUS MUSHROOM!!')
             """
             ),
-            r"""
-            assert badger() !=(
+            """
+            assert badger() != (
                               snake()+
                               snake()), 'POISONOUS MUSHROOM!\
                               Ai! I ate a POISONOUS MUSHROOM!!'
@@ -437,7 +418,7 @@
                           )
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assertEquals(badger(),
                               snake(), '''BAD BADGER
                               BAD BADGER
@@ -445,8 +426,8 @@
                               )
             """
             ),
-            r"""
-            assert badger() ==(
+            """
+            assert badger() == (
                               snake()), '''BAD BADGER
                               BAD BADGER
                               BAD BADGER'''
@@ -455,7 +436,7 @@
                         )
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assertEquals('''BAD BADGER
                               BAD BADGER
                               BAD BADGER''', '''BAD BADGER
@@ -463,7 +444,7 @@
                               BAD BADGER''')
             """
             ),
-            r"""
+            """
             assert '''BAD BADGER
                               BAD BADGER
                               BAD BADGER''' == '''BAD BADGER
@@ -473,7 +454,7 @@
                         )
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assertEquals('''GOOD MUSHROOM
                               GOOD MUSHROOM
                               GOOD MUSHROOM''',
@@ -485,10 +466,10 @@
                               FAILURE''')
             """
             ),
-            r"""
+            """
             assert '''GOOD MUSHROOM
                               GOOD MUSHROOM
-                              GOOD MUSHROOM''' ==(
+                              GOOD MUSHROOM''' == (
                               '''GOOD MUSHROOM
                               GOOD MUSHROOM
                               GOOD MUSHROOM'''),(
@@ -499,43 +480,43 @@
                         )
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assertAlmostEquals(first, second, 5, 'A Snake!')
             """
             ),
-            r"""
+            """
             assert round(first - second, 5) == 0, 'A Snake!'
             """
                           )
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assertAlmostEquals(first, second, 120)
             """
             ),
-            r"""
+            """
             assert round(first - second, 120) == 0
             """
                           )
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assertAlmostEquals(first, second)
             """
             ),
-            r"""
+            """
             assert round(first - second, 7) == 0
             """
                           )
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assertAlmostEqual(first, second, 5, '''A Snake!
             Ohh A Snake!  A Snake!!
             ''')
             """
             ),
-            r"""
+            """
             assert round(first - second, 5) == 0, '''A Snake!
             Ohh A Snake!  A Snake!!
             '''
@@ -543,54 +524,54 @@
                           )
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.assertNotAlmostEqual(first, second, 5, 'A Snake!')
             """
             ),
-            r"""
+            """
             assert round(first - second, 5) != 0, 'A Snake!'
             """
                           )
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.failIfAlmostEqual(first, second, 5, 'A Snake!')
             """
             ),
-            r"""
+            """
             assert not round(first - second, 5) == 0, 'A Snake!'
             """
                           )
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.failIfAlmostEqual(first, second, 5, 6, 7, 'Too Many Args')
             """
             ),
-            r"""
+            """
             self.failIfAlmostEqual(first, second, 5, 6, 7, 'Too Many Args')
             """
                           )
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
             self.failUnlessAlmostEquals(first, second, 5, 'A Snake!')
             """
             ),
-            r"""
+            """
             assert not round(first - second, 5) != 0, 'A Snake!'
             """
                           )
 
         self.assertEquals(rewrite_utest(
-            r"""
+            """
               self.assertAlmostEquals(now do something reasonable ..()
             oops, I am inside a comment as a ''' string, and the fname was
             mentioned in passing, leaving us with something that isn't an
             expression ... will this blow up?
             """
             ),
-            r"""
+            """
               self.assertAlmostEquals(now do something reasonable ..()
             oops, I am inside a comment as a ''' string, and the fname was
             mentioned in passing, leaving us with something that isn't an
@@ -601,6 +582,15 @@
                               
 if __name__ == '__main__':
     unittest.main()
-    #for block in  blocksplitter('xxx.py'): print rewrite_utest(block)
+    '''count = 1
+    for block in  blocksplitter('xxx.py'):
+        print 'START BLOCK', count
+        print rewrite_utest(block)
+        print 'END BLOCK', count
+        print
+        print
+        count +=1
+    '''
+#for block in  blocksplitter('xxx.py'): print rewrite_utest(block)
 
 



More information about the Pypy-commit mailing list