Changeset 191
- Timestamp:
- 01/01/07 23:41:10 (2 years ago)
- Files:
-
- pybeast/trunk/ctest/py2py.py (modified) (1 diff)
- pybeast/trunk/dtest/py2py.py (modified) (5 diffs)
- pybeast/trunk/src/py2py.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
pybeast/trunk/ctest/py2py.py
r190 r191 27 27 original = open('.temp.original','w') 28 28 print >> original, src 29 original.close 29 original.close() 30 30 formatted = open('.temp.formatted','w') 31 31 print >> formatted, formatter.dump() 32 32 formatted.close() 33 33 os.system('diff -uw .temp.original .temp.formatted') 34 35 msg = 'Failed to reformat \n%s\n correctly.\n AST: %s\nResult: \n%s'36 self.failUnless( formatter.dump()==src,37 msg % (src, ast, formatter.dump()))34 35 ast2 = compiler.parse(formatter.dump()) 36 self.failUnless(repr(ast)==repr(ast2), 37 'AST differ, original:\n%s\nNew:\n%s' % (ast, ast2)) 38 38 39 39 def test_complete(self): pybeast/trunk/dtest/py2py.py
r190 r191 96 96 'Tried to put parens as in if(op_stack[-2]) in list') 97 97 98 def test_and_the_or(self): 99 'Test parens around and to an or' 100 self.failUnless(Styler().need_parens(['And', 'Or']), 101 'Failed to put parens around (a or b) and c') 102 98 103 99 104 class NeedNewline(unittest.TestCase): … … 137 142 self.failUnless(formatter.dump()==expr, 138 143 msg % (expr, ast, formatter.dump())) 144 ast2 = compiler.parse(formatter.dump()) 145 self.failUnless(repr(ast) == repr(ast2), 146 'AST differ, original:\n%s\nNew:\n%s' % (ast, ast2)) 139 147 140 148 … … 217 225 'Test FloorDiv expr' 218 226 self.reformat_and_test('a // 5') 227 228 def test_parens(self): 229 'Test parens' 230 self.reformat_and_test('(a or b) and c') 219 231 220 232 … … 564 576 565 577 def test_parens(self): 566 'if len(x) > 1 or n.c.n != yand z:'567 self.reformat_and_test('if len(node.nodes) > 1 '568 +'or node.__class__.__name__ != \'Tuple\' '578 'if ( len(x) > 1 or n.c.n != y ) and z:' 579 self.reformat_and_test('if (len(node.nodes) > 1 ' 580 +'or node.__class__.__name__ != \'Tuple\') ' 569 581 +'and len(node.nodes):\n pass\n\n') 570 582 … … 745 757 746 758 759 class Global(Expr): 760 'Test \'global\' handling' 761 762 def test_global(self): 763 'global x' 764 self.reformat_and_test('global x, y') 765 766 767 class Exec(Expr): 768 'Test exec' 769 770 def test_simple(self): 771 'exec x + y' 772 self.reformat_and_test('exec x + y') 773 774 def test_locals(self): 775 'exec with locals' 776 self.reformat_and_test('exec x + y in y') 777 778 def test_globals(self): 779 'exec with locals and globals' 780 self.reformat_and_test('exec x + y in y, x') 781 782 747 783 if __name__ == '__main__': 748 784 unittest.main() pybeast/trunk/src/py2py.py
r190 r191 28 28 inside_op = op_stack[-1] 29 29 if inside_op in ('Add', 'Sub') and outside_op in ('Mul', 'Div'): 30 return True 31 if inside_op == 'Or' and outside_op == 'And': 30 32 return True 31 33 if outside_op == 'Compare' and inside_op not in ( … … 130 132 def visit_generic_list(self, node, walker, code): 131 133 'visit list join node' 132 for subnode in node.getChildNodes(): 134 need_parens_now = self.style.need_parens(self.expr_ops_stack) 135 self.maybe_add_space() 136 if need_parens_now: 137 self.code += '(' 138 139 for subnode in node.nodes: 133 140 walker.dispatch(subnode) 134 141 self.code += ' %s' % code 135 142 continue 143 136 144 self.code = self.code[:-len(' %s' %code)] 145 if need_parens_now: 146 self.code += ')' 137 147 138 148 def visit_function_paramlist(self, node, walker): … … 343 353 self.code += '}' 344 354 355 def visit_exec(self, node, walker): 356 'visit Exec node' 357 self.code += 'exec' 358 walker.dispatch(node.expr) 359 if not node.locals: 360 return 361 self.code += ' in' 362 walker.dispatch(node.locals) 363 if not node.globals: 364 return 365 self.code += ',' 366 walker.dispatch(node.globals) 367 345 368 def visit_for(self, node, walker): 346 369 'visit For statement node' … … 403 426 for ifs in node.ifs: 404 427 walker.dispatch(ifs) 428 429 def visit_global(self, node, walker): 430 'visit Global node' 431 self.code += 'global' 432 for name in node.names: 433 self.code += ' %s,' % name 434 self.code = self.code[:-1] 405 435 406 436 def visit_if(self, node, walker):
