Ejemplo n.º 1
0
    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())
Ejemplo n.º 2
0
    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")
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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, {})
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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())
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
    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())
Ejemplo n.º 11
0
    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"})
Ejemplo n.º 12
0
    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"})