def test_extension_module(self): spec = importlib.util.find_spec("extension") node, imports = graphbuilder.node_for_spec(spec, sys.path) self.assertIsInstance(node, ExtensionModule) self.assertEqual(node.name, "extension") self.assertEqual(node.identifier, "extension") self.assertIs(node.code, None) self.assertIsNot(node.loader, None) self.assertIs(node.distribution, None) self.assertEqual( node.filename, pathlib.Path( os.path.join( NODEBUILDER_TREE, "extension" + importlib.machinery.EXTENSION_SUFFIXES[0], ) ), ) self.assertEqual(node.extension_attributes, {}) self.assertEqual(node.globals_written, set()) self.assertEqual(node.globals_read, set())
def test_distribution(self): spec = importlib.util.find_spec("pip") node, imports = graphbuilder.node_for_spec(spec, sys.path) self.assertIsInstance(node, Package) self.assertIsInstance(node.distribution, PyPIDistribution) self.assertEqual(node.distribution.name, "pip")
def test_implicit_namespace_package(self): spec = importlib.util.find_spec("namespace_package") node, imports = graphbuilder.node_for_spec(spec, sys.path) self.assertIsInstance(node, NamespacePackage) self.assertEqual(node.name, "namespace_package") self.assertEqual(node.identifier, "namespace_package") self.assertEqual( node.search_path, [pathlib.Path(NODEBUILDER_TREE) / "namespace_package"]) self.assertEqual(node.has_data_files, False)
def test_package_empty_init(self): spec = importlib.util.find_spec("empty_init") node, imports = graphbuilder.node_for_spec(spec, sys.path) self.assertIsInstance(node, Package) self.assertEqual(node.name, "empty_init") self.assertEqual(node.identifier, "empty_init") self.assertEqual(node.search_path, [pathlib.Path(NODEBUILDER_TREE) / "empty_init"]) self.assertEqual(node.has_data_files, False) self.assertIsInstance(node.init_module, SourceModule)
def test_frozen(self): spec = importlib.util.find_spec("_frozen_importlib") node, imports = graphbuilder.node_for_spec(spec, sys.path) self.assertIsInstance(node, FrozenModule) self.assertEqual(node.name, "_frozen_importlib") self.assertEqual(node.identifier, "_frozen_importlib") self.assertIsNot(node.loader, None) self.assertIs(node.distribution, None) self.assertIs(node.filename, None) self.assertEqual(node.extension_attributes, {})
def test_package_init_extension(self): # Package with extension as __init__ spec = importlib.util.find_spec("ext_package") node, imports = graphbuilder.node_for_spec(spec, sys.path) self.assertIsInstance(node, Package) self.assertEqual(node.name, "ext_package") self.assertEqual(node.identifier, "ext_package") self.assertEqual(node.search_path, [pathlib.Path(NODEBUILDER_TREE) / "ext_package"]) self.assertEqual(node.has_data_files, False) self.assertIsInstance(node.init_module, ExtensionModule)
def test_package_init_bytecode(self): # Package with __init__.pyc spec = importlib.util.find_spec("bytecode_package") node, imports = graphbuilder.node_for_spec(spec, sys.path) self.assertIsInstance(node, Package) self.assertEqual(node.name, "bytecode_package") self.assertEqual(node.identifier, "bytecode_package") self.assertEqual(node.search_path, [pathlib.Path(NODEBUILDER_TREE) / "bytecode_package"]) self.assertEqual(node.has_data_files, True) self.assertIsInstance(node.init_module, BytecodeModule)
def test_builtin_module(self): spec = importlib.util.find_spec("sys") node, imports = graphbuilder.node_for_spec(spec, sys.path) self.assertIsInstance(node, BuiltinModule) self.assertEqual(node.name, "sys") self.assertEqual(node.identifier, "sys") self.assertIsNot(node.loader, None) self.assertIs(node.distribution, None) self.assertIs(node.filename, None) self.assertEqual(node.extension_attributes, {}) self.assertEqual(node.globals_written, set()) self.assertEqual(node.globals_read, set())
def test_zipfile_data_package(self): spec = importlib.util.find_spec("zfdatapackage") node, imports = graphbuilder.node_for_spec(spec, sys.path) self.assertIsInstance(node, Package) self.assertEqual(node.name, "zfdatapackage") self.assertEqual(node.identifier, "zfdatapackage") self.assertEqual( node.search_path, [pathlib.Path(NODEBUILDER_TREE) / "packages.zip" / "zfdatapackage"], ) self.assertEqual(node.has_data_files, True) self.assertIsInstance(node.init_module, SourceModule)
def test_zipfile_module(self): spec = importlib.util.find_spec("zfmod") node, imports = graphbuilder.node_for_spec(spec, sys.path) self.assertIsInstance(node, SourceModule) self.assertEqual(node.name, "zfmod") self.assertEqual(node.identifier, "zfmod") self.assertIsNot(node.loader, None) self.assertIs(node.distribution, None) self.assertEqual( node.filename, pathlib.Path(NODEBUILDER_TREE) / "packages.zip" / "zfmod.py") self.assertEqual(node.extension_attributes, {}) self.assertEqual(node.globals_written, {"__doc__"}) self.assertEqual(node.globals_read, set())
def test_source_module(self): spec = importlib.util.find_spec("simple_source") node, imports = graphbuilder.node_for_spec(spec, sys.path) self.assertIsInstance(node, SourceModule) self.assertEqual(node.name, "simple_source") self.assertEqual(node.identifier, "simple_source") self.assertIsNot(node.loader, None) self.assertIs(node.distribution, None) self.assertEqual(node.filename, pathlib.Path(NODEBUILDER_TREE) / "simple_source.py") self.assertEqual(node.extension_attributes, {}) self.assertEqual(node.globals_written, {"foo", "bar", "sys", "__doc__"}) self.assertEqual(node.globals_read, {"foo"})
def test_bytecode_module(self): # Module with only a PYC file spec = importlib.util.find_spec("bytecode_module") node, imports = graphbuilder.node_for_spec(spec, sys.path) self.assertIsInstance(node, BytecodeModule) self.assertEqual(node.name, "bytecode_module") self.assertEqual(node.identifier, "bytecode_module") self.assertIsNot(node.loader, None) self.assertIs(node.distribution, None) self.assertEqual( node.filename, pathlib.Path(NODEBUILDER_TREE) / "bytecode_module.pyc") self.assertEqual(node.extension_attributes, {}) self.assertEqual(node.globals_written, {"os", "a", "b", "__doc__"}) self.assertEqual(node.globals_read, {"a", "os", "len"})