def test_find_module(self):
record = []
class MockedModuleGraph(modulegraph.ModuleGraph):
def _find_module(self, name, path, parent=None):
if path == None:
path = sys.path
record.append((name, path))
return super(MockedModuleGraph, self)._find_module(name, path, parent)
mockedgraph = MockedModuleGraph()
try:
graph = modulegraph.ModuleGraph()
m = graph._find_module('sys', None)
self.assertEqual(record, [])
self.assertEqual(m, (None, None, ("", "", imp.C_BUILTIN)))
xml = graph.import_hook("xml")[0]
self.assertEqual(xml.identifier, 'xml')
self.assertRaises(ImportError, graph._find_module, 'xml', None)
self.assertEqual(record, [])
m = mockedgraph._find_module('shutil', None)
self.assertEqual(record, [
('shutil', graph.path),
])
self.assertTrue(isinstance(m, tuple))
self.assertEqual(len(m), 3)
self.assertTrue(hasattr(m[0], 'read'))
self.assertIsInstance(m[0].read(), str)
srcfn = shutil.__file__
if srcfn.endswith('.pyc'):
srcfn = srcfn[:-1]
self.assertEqual(os.path.realpath(m[1]), os.path.realpath(srcfn))
self.assertEqual(m[2], ('.py', READ_MODE, imp.PY_SOURCE))
m[0].close()
m2 = graph._find_module('shutil', None)
self.assertEqual(m[1:], m2[1:])
m2[0].close()
record[:] = []
m = mockedgraph._find_module('sax', xml.packagepath, xml)
# FIXME: PyInstaller appends `__init__.py` to the pkg-directory
#self.assertEqual(m,
# (None, os.path.join(os.path.dirname(xml.filename), 'sax'),
# ('', '', imp.PKG_DIRECTORY)))
self.assertEqual(record, [
('sax', xml.packagepath),
])
if m[0] is not None: m[0].close()
finally:
pass
test_modulegraph.py 文件源码
python
阅读 24
收藏 0
点赞 0
评论 0
评论列表
文章目录