def test_edge_label(self): node = transformers.ParentNodeTransformer().visit(ast.parse('x = 1')) self.visitor.visit(node) dot_edge = self.visitor.graph.get_edge(str(node), str(node.body[0]))[0] self.assertEqual(dot_edge.get_label(), 'body[0]')
def test_node_label(self): node = transformers.ParentNodeTransformer().visit(ast.parse('x = 1')) self.visitor.visit(node) dot_node = self.visitor.graph.get_node(str(node.body[0].value))[0] self.assertEqual(dot_node.get_label(), 'ast.Num(n=1)')
def test_does_not_have_edge(self): node = transformers.ParentNodeTransformer().visit(ast.parse('x = 1')) self.visitor.visit(node) self.assertFalse( self.visitor.graph.get_edge(str(node), str(node.body[0].value)))
def test_has_edge(self): node = transformers.ParentNodeTransformer().visit(ast.parse('x = 1')) self.visitor.visit(node) self.assertTrue( self.visitor.graph.get_edge(str(node), str(node.body[0])))
def test_multi_parents_node_label(self): node = transformers.ParentNodeTransformer().visit( ast.parse('x = 1\nx = 2')) self.visitor.visit(node) dot_node = self.visitor.graph.get_node(str(node.body[0].targets[0]))[0] self.assertEqual(dot_node.get_label(), "ast.Name(id='x', ctx=ast.Store())")
def __tests(): import ast with open('tests/function_def_test.py') as test_code: test_node = ast.parse(test_code.read()) node = transformers.ParentNodeTransformer().visit(test_node) visitor = visitors.GraphNodeVisitor() visitor.visit(node) visitor.graph.write_png('graph.png')
def test(): path = '../../apps/blur_two_stage/blur_two_stage.py' s_orig = open(path, 'rt').read() head = re.compile(r'#!\/.*\n|#.*coding[:=]\s*(?P<enc>[-\w.]+).*') source = head.sub('', s_orig) node = ast.parse(source) node = transformers.ParentNodeTransformer().visit(node) graph = build_graph(node) varname = 'a' line = 5 col = 4 start = programslice.graph.Edge(varname, line, col) result = programslice.graph.Slice(graph)(start) print(s_orig) print('--------------------------------') print('variables dependent on a at position (5, 4):') print() test_result = programslice.formatter.VimOutPutFormatter(result, path)() for i in range(1, len(test_result)): print(test_result[i]) find_for_node = dependency_util.FindForNode() find_for_node.visit(node) print('--------------------------------') print('original defnode:') print(node.body[1].body) print('--------------------------------') add_annotation(find_for_node.fornode) print('defnode after adding annotation:') print(node.body[1].body) return
def test_non_docstring_node(self): node = transformers.ParentNodeTransformer().visit(ast.parse('')) self.assertFalse(utils.is_docstring(node))
def test_class_docstring_node(self): node = transformers.ParentNodeTransformer().visit( ast.parse('class X:\n\t"""doc"""')) self.assertTrue(utils.is_docstring(node.body[0].body[0].value))
import ast from astmonkey import utils, transformers node = ast.parse('def foo(x):\n\t"""doc"""') node = transformers.ParentNodeTransformer().visit(node) docstring_node = node.body[0].body[0].value assert(not utils.is_docstring(node)) assert(utils.is_docstring(docstring_node))
def setUp(self): self.transformer = transformers.ParentNodeTransformer()