1"""
2Test for import machinery
3"""
4import unittest
5import sys
6import textwrap
7import subprocess
8import os
9from modulegraph import modulegraph
10
11class TestModuleGraphImport (unittest.TestCase):
12    if not hasattr(unittest.TestCase, 'assertIsInstance'):
13        def assertIsInstance(self, value, types):
14            if not isinstance(value, types):
15                self.fail("%r is not an instance of %r"%(value, types))
16
17    def test_compat(self):
18        root = os.path.join(
19                os.path.dirname(os.path.abspath(__file__)),
20                'testpkg-compatmodule')
21        mf = modulegraph.ModuleGraph(path=[ root ] + sys.path)
22        mf.import_hook('pkg.api')
23
24        node = mf.findNode('pkg')
25        self.assertIsInstance(node, modulegraph.Package)
26
27        node = mf.findNode('pkg.api')
28        self.assertIsInstance(node, modulegraph.SourceModule)
29
30        if sys.version_info[0] == 2:
31            node = mf.findNode('pkg.api2')
32            self.assertIsInstance(node, modulegraph.SourceModule)
33
34            node = mf.findNode('pkg.api3')
35            self.assertIsInstance(node, modulegraph.InvalidSourceModule)
36
37            node = mf.findNode('http.client')
38            self.assertIs(node, None)
39
40            node = mf.findNode('urllib2')
41            self.assertIsInstance(node, modulegraph.SourceModule)
42
43        else:
44            node = mf.findNode('pkg.api2')
45            self.assertIsInstance(node, modulegraph.InvalidSourceModule)
46
47            node = mf.findNode('pkg.api3')
48            self.assertIsInstance(node, modulegraph.SourceModule)
49
50            node = mf.findNode('http.client')
51            self.assertIsInstance(node, modulegraph.SourceModule)
52
53            node = mf.findNode('urllib2')
54            self.assertIs(node, None)
55
56
57
58
59if __name__ == "__main__":
60    unittest.main()
61