def test_package_name(self): """test base properties and method of a astroid module""" datap = resources.build_file('data/__init__.py', 'data') self.assertEqual(datap.name, 'data') self.assertEqual(datap.package, 1) datap = resources.build_file('data/__init__.py', 'data.__init__') self.assertEqual(datap.name, 'data') self.assertEqual(datap.package, 1)
def test_package_name(self): """test base properties and method of an astroid module""" datap = resources.build_file("data/__init__.py", "data") self.assertEqual(datap.name, "data") self.assertEqual(datap.package, 1) datap = resources.build_file("data/__init__.py", "data.__init__") self.assertEqual(datap.name, "data") self.assertEqual(datap.package, 1) datap = resources.build_file("data/tmp__init__.py", "data.tmp__init__") self.assertEqual(datap.name, "data.tmp__init__") self.assertEqual(datap.package, 0)
def test_absolute_import(self): astroid = resources.build_file('data/absimport.py') ctx = InferenceContext() # will fail if absolute import failed next(astroid['message'].infer(ctx, lookupname='message')) m = next(astroid['email'].infer(ctx, lookupname='email')) self.assertFalse(m.file.startswith(os.path.join('data', 'email.py')))
def test_big_binop_crash(self): # Test that we don't fail on a lot of joined strings # through the addition operator. module = resources.build_file('data/joined_strings.py') element = next(module['x'].infer()) self.assertIsInstance(element, astroid.Const) self.assertEqual(len(element.value), 61660)
def test_get_children_order(): class OrderVisitor: def __init__(self): for node_class in nodes.ALL_NODE_CLASSES: visit_name = 'visit_' + node_class.__name__.lower() self.__dict__[visit_name] = self.visit self.position = (0, 0) def visit(self, node): if (isinstance(node, node_classes.BinOp) and (isinstance(node.left, node_classes.BinOp) or isinstance(node.right, node_classes.BinOp))): # The outer BinOp in nested BinOps has incorrect col_offset # at the col_offset of the operator return if isinstance(node, node_classes.ExceptHandler): # Exception handler name node has incorrect col_offset of 0 return # All other node classes have correct positions so check they # are yielded in position order for child in node.get_children(): if child.lineno is not None: position = (child.lineno, child.col_offset) assert self.position <= position, child self.position = position child.accept(self) ast = builder.parse(''' def func(a: bool, b=1, *c: str, d: str, e=2, **kwargs: int): return b if a else e a = 1 + 2 + 3 try: func() except Exception as e: pass ''') ast.accept(OrderVisitor()) for module in ['data/module.py', 'data/module2.py']: resources.build_file(module).accept(OrderVisitor())
def test_absolute_import(self): module = resources.build_file("data/absimport.py") ctx = contextmod.InferenceContext() # will fail if absolute import failed ctx.lookupname = "message" next(module["message"].infer(ctx)) ctx.lookupname = "email" m = next(module["email"].infer(ctx)) self.assertFalse(m.file.startswith(os.path.join("data", "email.py")))
def test_absolute_import(self): module = resources.build_file('data/absimport.py') ctx = contextmod.InferenceContext() # will fail if absolute import failed ctx.lookupname = 'message' next(module['message'].infer(ctx)) ctx.lookupname = 'email' m = next(module['email'].infer(ctx)) self.assertFalse(m.file.startswith(os.path.join('data', 'email.py')))
def test_absolute_import(self): astroid = resources.build_file("data/absimport.py") ctx = contextmod.InferenceContext() # will fail if absolute import failed ctx.lookupname = "message" next(astroid["message"].infer(ctx)) ctx.lookupname = "email" m = next(astroid["email"].infer(ctx)) self.assertFalse(m.file.startswith(os.path.join("data", "email.py")))
def test_wildard_import_names(self): m = resources.build_file('data/all.py', 'all') self.assertEqual(m.wildcard_import_names(), ['Aaa', '_bla', 'name']) m = resources.build_file('data/notall.py', 'notall') res = sorted(m.wildcard_import_names()) self.assertEqual(res, ['Aaa', 'func', 'name', 'other']) m = test_utils.build_module(''' from missing import tzop trop = "test" __all__ = (trop, "test1", tzop, 42) ''') res = sorted(m.wildcard_import_names()) self.assertEqual(res, ["test", "test1"]) m = test_utils.build_module(''' test = tzop = 42 __all__ = ('test', ) + ('tzop', ) ''') res = sorted(m.wildcard_import_names()) self.assertEqual(res, ['test', 'tzop'])
def test_getattr(self): yo = self.module.getattr('YO')[0] self.assertIsInstance(yo, nodes.Class) self.assertEqual(yo.name, 'YO') red = next(self.module.igetattr('redirect')) self.assertIsInstance(red, nodes.Function) self.assertEqual(red.name, 'four_args') pb = next(self.module.igetattr('pb')) self.assertIsInstance(pb, nodes.Class) self.assertEqual(pb.name, 'ProgressBar') # resolve packageredirection mod = resources.build_file('data/appl/myConnection.py', 'data.appl.myConnection') ssl = next(mod.igetattr('SSL1')) cnx = next(ssl.igetattr('Connection')) self.assertEqual(cnx.__class__, nodes.Class) self.assertEqual(cnx.name, 'Connection') self.assertEqual(cnx.root().name, 'data.SSL1.Connection1') self.assertEqual(len(self.nonregr.getattr('enumerate')), 2) # raise ResolveError self.assertRaises(InferenceError, self.nonregr.igetattr, 'YOAA')
def setUp(self): super(ImportNodeTest, self).setUp() self.module = resources.build_file("data/module.py", "data.module") self.module2 = resources.build_file("data/module2.py", "data.module2")
def test_missing_newline(self): """check that a file with no trailing new line is parseable""" resources.build_file('data/noendingnewline.py')
def test_missing_file(self): with self.assertRaises(exceptions.AstroidBuildingError): resources.build_file('data/inexistant.py')
def test_more_absolute_import(self): module = resources.build_file('data/module1abs/__init__.py', 'data.module1abs') self.assertIn('sys', module.locals)
def test_module2_as_string(self): """check as_string on a whole module prepared to be returned identically """ module2 = resources.build_file('data/module2.py', 'data.module2') with open(resources.find('data/module2.py'), 'r') as fobj: self.assertMultiLineEqual(module2.as_string(), fobj.read())
def setUp(self): super(ModuleLoader, self).setUp() self.module = resources.build_file('data/module.py', 'data.module') self.module2 = resources.build_file('data/module2.py', 'data.module2') self.nonregr = resources.build_file('data/nonregr.py', 'data.nonregr') self.pack = resources.build_file('data/__init__.py', 'data')
def test_missing_file(self): with self.assertRaises(builder.AstroidBuildingException): resources.build_file('data/inexistant.py')
def setUp(self): super(LookupTest, self).setUp() self.module = resources.build_file("data/module.py", "data.module") self.module2 = resources.build_file("data/module2.py", "data.module2") self.nonregr = resources.build_file("data/nonregr.py", "data.nonregr")
def setUp(self): self.module = resources.build_file('data/module.py', 'data.module')
def test_unknown_encoding(self): with self.assertRaises(exceptions.AstroidSyntaxError): resources.build_file('data/invalid_encoding.py')
def setUp(self): self.astroid = resources.build_file('data/format.py')
def test_more_absolute_import(self): astroid = resources.build_file("data/module1abs/__init__.py", "data.module1abs") self.assertIn("sys", astroid.locals)
def test_module_as_string(self): """check as_string on a whole module prepared to be returned identically """ module = resources.build_file("data/module.py", "data.module") with open(resources.find("data/module.py"), "r") as fobj: self.assertMultiLineEqual(module.as_string(), fobj.read())
def test_missing_newline(self): """check that a file with no trailing new line is parseable""" resources.build_file("data/noendingnewline.py")
def setUp(self): self.module = resources.build_file("data/module.py", "data.module")
def setUp(self): super(LookupTest, self).setUp() self.module = resources.build_file('data/module.py', 'data.module') self.module2 = resources.build_file('data/module2.py', 'data.module2') self.nonregr = resources.build_file('data/nonregr.py', 'data.nonregr')
def test_more_absolute_import(self): module = resources.build_file("data/module1abs/__init__.py", "data.module1abs") self.assertIn("sys", module.locals)
def test_missing_file(self): with self.assertRaises(exceptions.AstroidBuildingError): resources.build_file("data/inexistant.py")
def setUp(self): self.astroid = resources.build_file("data/format.py")
def test_unknown_encoding(self): with self.assertRaises(exceptions.AstroidSyntaxError): resources.build_file("data/invalid_encoding.py")
def setUp(self): super(ImportNodeTest, self).setUp() self.module = resources.build_file('data/module.py', 'data.module') self.module2 = resources.build_file('data/module2.py', 'data.module2')