From bd25fc260e6f66086746eec57ccfe87d6fd56aaa Mon Sep 17 00:00:00 2001 From: Claudiu Popa Date: Sat, 11 Jul 2015 17:57:21 +0300 Subject: Cleanup builder.py --- astroid/tests/unittest_builder.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'astroid/tests/unittest_builder.py') diff --git a/astroid/tests/unittest_builder.py b/astroid/tests/unittest_builder.py index 9d8e7d01..21266506 100644 --- a/astroid/tests/unittest_builder.py +++ b/astroid/tests/unittest_builder.py @@ -23,6 +23,7 @@ import unittest from astroid import builder, nodes, InferenceError, NotFoundError from astroid.bases import YES, BUILTINS +from astroid import exceptions from astroid.manager import AstroidManager from astroid import test_utils from astroid.tests import resources @@ -251,11 +252,11 @@ class BuilderTest(unittest.TestCase): self.builder = builder.AstroidBuilder() def test_data_build_null_bytes(self): - with self.assertRaises(builder.AstroidBuildingException): + with self.assertRaises(exceptions.AstroidBuildingException): self.builder.string_build('\x00') def test_data_build_invalid_x_escape(self): - with self.assertRaises(builder.AstroidBuildingException): + with self.assertRaises(exceptions.AstroidBuildingException): self.builder.string_build('"\\x1"') def test_missing_newline(self): @@ -263,7 +264,7 @@ class BuilderTest(unittest.TestCase): resources.build_file('data/noendingnewline.py') def test_missing_file(self): - with self.assertRaises(builder.AstroidBuildingException): + with self.assertRaises(exceptions.AstroidBuildingException): resources.build_file('data/inexistant.py') def test_inspect_build0(self): -- cgit v1.2.1 From 90ef70abfa57397ce34aab4e9b23a7623e48d66f Mon Sep 17 00:00:00 2001 From: Claudiu Popa Date: Sat, 11 Jul 2015 18:12:18 +0300 Subject: Add a new convenience API, `astroid.parse`. This API can be used to retrieve an astroid AST from a source code string, similar to how ast.parse can be used to obtain a Python AST from a source string. This is the test_utils.build_module promoted to a public API. --- astroid/tests/unittest_builder.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'astroid/tests/unittest_builder.py') diff --git a/astroid/tests/unittest_builder.py b/astroid/tests/unittest_builder.py index 21266506..65dd1908 100644 --- a/astroid/tests/unittest_builder.py +++ b/astroid/tests/unittest_builder.py @@ -110,7 +110,7 @@ class FromToLineNoTest(unittest.TestCase): '(no line number on function args)') def test_decorated_function_lineno(self): - astroid = test_utils.build_module(''' + astroid = builder.parse(''' @decorator def function( arg): @@ -173,7 +173,7 @@ class FromToLineNoTest(unittest.TestCase): else: print ("bouh") '''): - astroid = test_utils.build_module(code, __name__) + astroid = builder.parse(code, __name__) stmt = astroid.body[0] self.assertEqual(stmt.fromlineno, 2) self.assertEqual(stmt.tolineno, 6) @@ -182,7 +182,7 @@ class FromToLineNoTest(unittest.TestCase): self.assertEqual(stmt.orelse[0].tolineno, 6) def test_try_except_lineno(self): - astroid = test_utils.build_module(''' + astroid = builder.parse(''' try: print (a) except: @@ -203,7 +203,7 @@ class FromToLineNoTest(unittest.TestCase): def test_try_finally_lineno(self): - astroid = test_utils.build_module(''' + astroid = builder.parse(''' try: print (a) finally: @@ -218,7 +218,7 @@ class FromToLineNoTest(unittest.TestCase): def test_try_finally_25_lineno(self): - astroid = test_utils.build_module(''' + astroid = builder.parse(''' try: print (a) except: @@ -235,7 +235,7 @@ class FromToLineNoTest(unittest.TestCase): def test_with_lineno(self): - astroid = test_utils.build_module(''' + astroid = builder.parse(''' from __future__ import with_statement with file("/tmp/pouet") as f: print (f) @@ -418,7 +418,7 @@ class BuilderTest(unittest.TestCase): class F: "new style" ''' - mod_ast = test_utils.build_module(data, __name__) + mod_ast = builder.parse(data, __name__) if IS_PY3: self.assertTrue(mod_ast['A'].newstyle) self.assertTrue(mod_ast['B'].newstyle) @@ -443,7 +443,7 @@ class BuilderTest(unittest.TestCase): global CSTE2 print (CSTE) ''' - astroid = test_utils.build_module(data, __name__) + astroid = builder.parse(data, __name__) self.assertEqual(len(astroid.getattr('CSTE')), 2) self.assertIsInstance(astroid.getattr('CSTE')[0], nodes.AssName) self.assertEqual(astroid.getattr('CSTE')[0].fromlineno, 2) @@ -472,7 +472,7 @@ class BuilderTest(unittest.TestCase): def test_gen_expr_var_scope(self): data = 'l = list(n for n in range(10))\n' - astroid = test_utils.build_module(data, __name__) + astroid = builder.parse(data, __name__) # n unavailable outside gen expr scope self.assertNotIn('n', astroid) # test n is inferable anyway @@ -482,15 +482,15 @@ class BuilderTest(unittest.TestCase): [YES.__class__]) def test_no_future_imports(self): - mod = test_utils.build_module("import sys") + mod = builder.parse("import sys") self.assertEqual(set(), mod.future_imports) def test_future_imports(self): - mod = test_utils.build_module("from __future__ import print_function") + mod = builder.parse("from __future__ import print_function") self.assertEqual(set(['print_function']), mod.future_imports) def test_two_future_imports(self): - mod = test_utils.build_module(""" + mod = builder.parse(""" from __future__ import print_function from __future__ import absolute_import """) @@ -505,7 +505,7 @@ class BuilderTest(unittest.TestCase): print (self) A.ass_type = A_ass_type ''' - astroid = test_utils.build_module(code) + astroid = builder.parse(code) lclass = list(astroid.igetattr('A')) self.assertEqual(len(lclass), 1) lclass = lclass[0] @@ -513,7 +513,7 @@ class BuilderTest(unittest.TestCase): self.assertIn('type', lclass.locals) def test_augassign_attr(self): - test_utils.build_module(""" + builder.parse(""" class Counter: v = 0 def inc(self): @@ -529,7 +529,7 @@ class BuilderTest(unittest.TestCase): def func2(a={}): a.custom_attr = 0 ''' - test_utils.build_module(code) + builder.parse(code) nonetype = nodes.const_factory(None) self.assertNotIn('custom_attr', nonetype.locals) self.assertNotIn('custom_attr', nonetype.instance_attrs) @@ -539,13 +539,13 @@ class BuilderTest(unittest.TestCase): def test_asstuple(self): code = 'a, b = range(2)' - astroid = test_utils.build_module(code) + astroid = builder.parse(code) self.assertIn('b', astroid.locals) code = ''' def visit_if(self, node): node.test, body = node.tests[0] ''' - astroid = test_utils.build_module(code) + astroid = builder.parse(code) self.assertIn('body', astroid['visit_if'].locals) def test_build_constants(self): @@ -556,7 +556,7 @@ class BuilderTest(unittest.TestCase): return return 'None' ''' - astroid = test_utils.build_module(code) + astroid = builder.parse(code) none, nothing, chain = [ret.value for ret in astroid.body[0].body] self.assertIsInstance(none, nodes.Const) self.assertIsNone(none.value) -- cgit v1.2.1 From afe92ebef42ba05f7ce9701c78cdeb61a29d7467 Mon Sep 17 00:00:00 2001 From: Claudiu Popa Date: Sat, 11 Jul 2015 18:17:58 +0300 Subject: Cleanup builder tests. --- astroid/tests/unittest_builder.py | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) (limited to 'astroid/tests/unittest_builder.py') diff --git a/astroid/tests/unittest_builder.py b/astroid/tests/unittest_builder.py index 65dd1908..5719cb12 100644 --- a/astroid/tests/unittest_builder.py +++ b/astroid/tests/unittest_builder.py @@ -21,15 +21,18 @@ import os import sys import unittest -from astroid import builder, nodes, InferenceError, NotFoundError -from astroid.bases import YES, BUILTINS +import six + +from astroid import bases +from astroid import builder from astroid import exceptions -from astroid.manager import AstroidManager +from astroid import manager +from astroid import nodes from astroid import test_utils from astroid.tests import resources -MANAGER = AstroidManager() -IS_PY3 = sys.version_info[0] == 3 +MANAGER = manager.AstroidManager() +BUILTINS = six.moves.builtins.__name__ class FromToLineNoTest(unittest.TestCase): @@ -270,7 +273,7 @@ class BuilderTest(unittest.TestCase): def test_inspect_build0(self): """test astroid tree build from a living object""" builtin_ast = MANAGER.ast_from_module_name(BUILTINS) - if not IS_PY3: + if six.PY2: fclass = builtin_ast['file'] self.assertIn('name', fclass) self.assertIn('mode', fclass) @@ -295,7 +298,7 @@ class BuilderTest(unittest.TestCase): self.assertIsInstance(builtin_ast['None'], nodes.Const) self.assertIsInstance(builtin_ast['True'], nodes.Const) self.assertIsInstance(builtin_ast['False'], nodes.Const) - if IS_PY3: + if six.PY3: self.assertIsInstance(builtin_ast['Exception'], nodes.Class) self.assertIsInstance(builtin_ast['NotImplementedError'], nodes.Class) else: @@ -419,7 +422,7 @@ class BuilderTest(unittest.TestCase): "new style" ''' mod_ast = builder.parse(data, __name__) - if IS_PY3: + if six.PY3: self.assertTrue(mod_ast['A'].newstyle) self.assertTrue(mod_ast['B'].newstyle) self.assertTrue(mod_ast['E'].newstyle) @@ -448,9 +451,9 @@ class BuilderTest(unittest.TestCase): self.assertIsInstance(astroid.getattr('CSTE')[0], nodes.AssName) self.assertEqual(astroid.getattr('CSTE')[0].fromlineno, 2) self.assertEqual(astroid.getattr('CSTE')[1].fromlineno, 6) - with self.assertRaises(NotFoundError): + with self.assertRaises(exceptions.NotFoundError): astroid.getattr('CSTE2') - with self.assertRaises(InferenceError): + with self.assertRaises(exceptions.InferenceError): next(astroid['global_no_effect'].ilookup('CSTE2')) @unittest.skipIf(os.name == 'java', @@ -479,7 +482,7 @@ class BuilderTest(unittest.TestCase): n = test_utils.get_name_node(astroid, 'n') self.assertIsNot(n.scope(), astroid) self.assertEqual([i.__class__ for i in n.infer()], - [YES.__class__]) + [bases.YES.__class__]) def test_no_future_imports(self): mod = builder.parse("import sys") @@ -651,7 +654,7 @@ class FileBuildTest(unittest.TestCase): self.assertEqual(klass.parent.frame(), module) self.assertEqual(klass.root(), module) self.assertEqual(klass.basenames, []) - if IS_PY3: + if six.PY3: self.assertTrue(klass.newstyle) else: self.assertFalse(klass.newstyle) @@ -729,7 +732,7 @@ class ModuleBuildTest(resources.SysPathSetup, FileBuildTest): else: self.module = abuilder.module_build(data.module, 'data.module') -@unittest.skipIf(IS_PY3, "guess_encoding not used on Python 3") +@unittest.skipIf(six.PY3, "guess_encoding not used on Python 3") class TestGuessEncoding(unittest.TestCase): def setUp(self): self.guess_encoding = builder._guess_encoding -- cgit v1.2.1