Statistics
| Revision:

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()