Show More
@@ -2694,7 +2694,7 class InteractiveShell(SingletonConfigurable): | |||||
2694 | warn("AST transformer %r threw an error. It will be unregistered." % transformer) |
|
2694 | warn("AST transformer %r threw an error. It will be unregistered." % transformer) | |
2695 | self.ast_transformers.remove(transformer) |
|
2695 | self.ast_transformers.remove(transformer) | |
2696 |
|
2696 | |||
2697 | return node |
|
2697 | return ast.fix_missing_locations(node) | |
2698 |
|
2698 | |||
2699 |
|
2699 | |||
2700 | def run_ast_nodes(self, nodelist, cell_name, interactivity='last_expr'): |
|
2700 | def run_ast_nodes(self, nodelist, cell_name, interactivity='last_expr'): |
@@ -438,6 +438,31 class TestAstTransform(unittest.TestCase): | |||||
438 | with tt.AssertNotPrints('-55'): |
|
438 | with tt.AssertNotPrints('-55'): | |
439 | ip.run_cell('print (n)') |
|
439 | ip.run_cell('print (n)') | |
440 |
|
440 | |||
|
441 | class IntegerWrapper(ast.NodeTransformer): | |||
|
442 | """Wraps all integers in a call to Integer()""" | |||
|
443 | def visit_Num(self, node): | |||
|
444 | if isinstance(node.n, int): | |||
|
445 | return ast.Call(func=ast.Name(id='Integer', ctx=ast.Load()), | |||
|
446 | args=[node], keywords=[]) | |||
|
447 | ||||
|
448 | class TestAstTransform2(unittest.TestCase): | |||
|
449 | def setUp(self): | |||
|
450 | self.intwrapper = IntegerWrapper() | |||
|
451 | ip.ast_transformers.append(self.intwrapper) | |||
|
452 | ||||
|
453 | self.calls = [] | |||
|
454 | def Integer(*args): | |||
|
455 | self.calls.append(args) | |||
|
456 | ip.push({"Integer": Integer}) | |||
|
457 | ||||
|
458 | def tearDown(self): | |||
|
459 | ip.ast_transformers.remove(self.intwrapper) | |||
|
460 | del ip.user_ns['Integer'] | |||
|
461 | ||||
|
462 | def test_run_cell(self): | |||
|
463 | ip.run_cell("n = 2") | |||
|
464 | self.assertEqual(self.calls, [(2,)]) | |||
|
465 | ||||
441 | class ErrorTransformer(ast.NodeTransformer): |
|
466 | class ErrorTransformer(ast.NodeTransformer): | |
442 | """Throws an error when it sees a number.""" |
|
467 | """Throws an error when it sees a number.""" | |
443 | def visit_Num(self): |
|
468 | def visit_Num(self): |
General Comments 0
You need to be logged in to leave comments.
Login now