[pypy-svn] r5180 - pypy/branch/src-new-utest/pypy/tool
lac at codespeak.net
lac at codespeak.net
Sun Jun 20 11:57:54 CEST 2004
Author: lac
Date: Sun Jun 20 11:57:54 2004
New Revision: 5180
Modified:
pypy/branch/src-new-utest/pypy/tool/utestconvert.py
Log:
fixed bug where triple quotes comments as right hand side of
assert == and friends was getting an erroneous extra backslash
Modified: pypy/branch/src-new-utest/pypy/tool/utestconvert.py
==============================================================================
--- pypy/branch/src-new-utest/pypy/tool/utestconvert.py (original)
+++ pypy/branch/src-new-utest/pypy/tool/utestconvert.py Sun Jun 20 11:57:54 2004
@@ -53,7 +53,7 @@
left = re.sub(r'\n', r'\\\n', left)
if right[0] == '\n': # that needs a slash too ...
- # do we handle non unix correctly?
+ # do we handle non-unix correctly?
between = ',\\'
else:
between = ','
@@ -71,27 +71,43 @@
return indent + new + expr + trailer
def comma_to_op(old, new, block, op):
- # dictionary dispatch function. get_expr does all the work.
+ # dictionary dispatch function. parser.expr does all the work.
+
indent, expr, trailer = common_setup(old, block)
+ new = new + ' '
+ op = ' ' + op
left, right = get_expr(expr, ',')
- #print 'left is <%s>, right is <%s>' % (left, right)
+ print 'left is <%s>, right is <%s>' % (left, right)
try:
parser.expr(left) # that paren came off easily
- left = left + ' ' + op
except SyntaxError:
- left = re.sub(r'\n', r'\\\n', left + ' ' + op)
- #if right[0] == '\n': # that needs a slash too ...
- # left += '\\'
+ left = re.sub(r'\n', r'\\\n', left)
+
try:
- parser.expr(right) # that paren came off easily
+ parser.expr(right.lstrip()) # that paren came off easily
+
except SyntaxError:
right = re.sub(r'\n', r'\\\n', right)
- return indent + new + ' ' + left + right + trailer
+ if right[0] == '\n':
+ op = op + '\\'
+ return indent + new + left + op + right + trailer
-def common_setup(old, block):
+def right_finder(s):
+
+ for i in range(len(s)):
+ if s[i] != ' ' and s[i] != '\t':
+ print i
+ break
+ if s[i] == '\n':
+ return True
+ else:
+ return False
+
+def common_setup(old, block):
+ """split the block into component parts"""
indent = re.search(r'^(\s*)', block).group()
pat = re.search('self.' + old + r'\(', block)
expr, trailer = get_expr(block[pat.end():], ')')
@@ -385,7 +401,28 @@
self.assertEquals(process_block("self.failUnlessEqual(0, 0)"),
"assert not 0 != 0")
+
+ self.assertEquals(process_block(
+ r"""
+ self.failUnlessEqual(mushroom()
+ + mushroom()
+ + mushroom(), '''badger badger badger badger
+ badger badger badger badger
+ badger badger badger badger
+ ''') # multiline, must remove the parens
+ """
+ ),
+ r"""
+ assert not mushroom()\
+ + mushroom()\
+ + mushroom() != '''badger badger badger badger
+ badger badger badger badger
+ badger badger badger badger
+ ''' # multiline, must remove the parens
+ """
+ )
if __name__ == '__main__':
unittest.main()
#for block in blocksplitter('xxx.py'): print process_block(block)
+
More information about the Pypy-commit
mailing list