def test_module_with_a_single_attribute(self): ast_node = ast.parse('x = 1') module = Module.from_ast_node(ast_node=ast_node, filename='test.py') self.assertChildren({'x' : Attribute}, module) return
def test_module_with_a_single_function(self): ast_node = ast.parse('def bar(): pass') module = Module.from_ast_node(ast_node=ast_node, filename='test.py') self.assertChildren({'bar' : Function}, module) return
def test_module_with_a_single_klass(self): ast_node = ast.parse('class Foo(object): pass') module = Module.from_ast_node(ast_node=ast_node, filename='test.py') self.assertChildren({'Foo' : Klass}, module) return
def test_module_with_a_docstring(self): ast_node = ast.parse('""" This is a docstring! """') module = Module.from_ast_node(ast_node=ast_node, filename='test.py') self.assertEqual('This is a docstring! ', module.doc) self.assertEqual(0, len(module.children)) return
def _create_module(self, code): """ Create a 'Module' instance from the given code. Return a module AST node. """ ast_node = ast.parse(code) module = Module.from_ast_node(ast_node=ast_node, filename="test.py") return module
def test_module_scope_function(self): ast_node = ast.parse('def foo(): """ A function! """') module = Module.from_ast_node(ast_node=ast_node, filename='test.py') function = module.get_child_named('foo') self.assertTrue(isinstance(function, Function)) self.assertEqual(module, function.parent) self.assertEqual(module, function.module) self.assertEqual(1, function.lineno) self.assertEqual('A function! ', function.doc) return
def test_empty_module(self): ast_node = ast.parse('') module = Module.from_ast_node(ast_node=ast_node, filename='test.py') self.assertEqual(None, module.parent) self.assertEqual(None, module.module) self.assertEqual('test', module.dotted_name) self.assertEqual('test', module.name) self.assertEqual(None, module.doc) self.assertEqual(0, len(module.children)) return
def test_method(self): ast_node = ast.parse('class Foo():\n def bar(self): """ A method! """') module = Module.from_ast_node(ast_node=ast_node, filename='test.py') klass = module.get_child_named('Foo') method = klass.get_child_named('bar') self.assertEqual(Function, type(method)) self.assertEqual(klass, method.parent) self.assertEqual(module, method.module) self.assertEqual(2, method.lineno) self.assertEqual('A method! ', method.doc) return
def test_module_with_multiple_attributes(self): ast_node = ast.parse('x, y, z = 1; a = 2') module = Module.from_ast_node(ast_node=ast_node, filename='test.py') self.assertChildren( { 'x' : Attribute, 'y' : Attribute, 'z' : Attribute, 'a' : Attribute }, module ) return
def test_example_module(self): ast_node = ast.parse(EXAMPLE_MODULE) module = Module.from_ast_node(ast_node=ast_node, filename='test.py') self.assertChildren( { 'Dino' : Klass, 'Person' : Klass, 'frobnicate' : Function, 'town_name' : Attribute, # Imports 'HasTraits' : Attribute, 'Int' : Attribute, 'Str' : Attribute, }, module ) return