gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.app / org.gvsig.scripting.app.mainplugin / src / main / resources-plugin / scripting / lib / astroid / tests / unittest_raw_building.py @ 745
History | View | Annotate | Download (3 KB)
1 |
import inspect |
---|---|
2 |
import os |
3 |
import unittest |
4 |
|
5 |
from six.moves import builtins # pylint: disable=import-error |
6 |
|
7 |
from astroid.builder import AstroidBuilder |
8 |
from astroid.raw_building import ( |
9 |
attach_dummy_node, build_module, |
10 |
build_class, build_function, build_from_import |
11 |
) |
12 |
from astroid import test_utils |
13 |
from astroid import nodes |
14 |
from astroid.bases import BUILTINS |
15 |
|
16 |
|
17 |
class RawBuildingTC(unittest.TestCase): |
18 |
|
19 |
def test_attach_dummy_node(self): |
20 |
node = build_module('MyModule')
|
21 |
attach_dummy_node(node, 'DummyNode')
|
22 |
self.assertEqual(1, len(list(node.get_children()))) |
23 |
|
24 |
def test_build_module(self): |
25 |
node = build_module('MyModule')
|
26 |
self.assertEqual(node.name, 'MyModule') |
27 |
self.assertEqual(node.pure_python, False) |
28 |
self.assertEqual(node.package, False) |
29 |
self.assertEqual(node.parent, None) |
30 |
|
31 |
def test_build_class(self): |
32 |
node = build_class('MyClass')
|
33 |
self.assertEqual(node.name, 'MyClass') |
34 |
self.assertEqual(node.doc, None) |
35 |
|
36 |
def test_build_function(self): |
37 |
node = build_function('MyFunction')
|
38 |
self.assertEqual(node.name, 'MyFunction') |
39 |
self.assertEqual(node.doc, None) |
40 |
|
41 |
def test_build_function_args(self): |
42 |
args = ['myArgs1', 'myArgs2'] |
43 |
node = build_function('MyFunction', args)
|
44 |
self.assertEqual('myArgs1', node.args.args[0].name) |
45 |
self.assertEqual('myArgs2', node.args.args[1].name) |
46 |
self.assertEqual(2, len(node.args.args)) |
47 |
|
48 |
def test_build_function_defaults(self): |
49 |
defaults = ['defaults1', 'defaults2'] |
50 |
node = build_function('MyFunction', None, defaults) |
51 |
self.assertEqual(2, len(node.args.defaults)) |
52 |
|
53 |
def test_build_from_import(self): |
54 |
names = ['exceptions, inference, inspector']
|
55 |
node = build_from_import('astroid', names)
|
56 |
self.assertEqual(len(names), len(node.names)) |
57 |
|
58 |
@test_utils.require_version(minver='3.0') |
59 |
def test_io_is__io(self): |
60 |
# _io module calls itself io. This leads
|
61 |
# to cyclic dependencies when astroid tries to resolve
|
62 |
# what io.BufferedReader is. The code that handles this
|
63 |
# is in astroid.raw_building.imported_member, which verifies
|
64 |
# the true name of the module.
|
65 |
import _io |
66 |
|
67 |
builder = AstroidBuilder() |
68 |
module = builder.inspect_build(_io) |
69 |
buffered_reader = module.getattr('BufferedReader')[0] |
70 |
self.assertEqual(buffered_reader.root().name, 'io') |
71 |
|
72 |
@unittest.skipUnless(os.name == 'java', 'Requires Jython') |
73 |
def test_open_is_inferred_correctly(self): |
74 |
# Lot of Jython builtins don't have a __module__ attribute.
|
75 |
for name, _ in inspect.getmembers(builtins, predicate=inspect.isbuiltin): |
76 |
if name == 'print': |
77 |
continue
|
78 |
node = test_utils.extract_node('{0} #@'.format(name))
|
79 |
inferred = next(node.infer())
|
80 |
self.assertIsInstance(inferred, nodes.FunctionDef, name)
|
81 |
self.assertEqual(inferred.root().name, BUILTINS, name)
|
82 |
|
83 |
|
84 |
if __name__ == '__main__': |
85 |
unittest.main() |