mirror of
https://github.com/python/cpython.git
synced 2025-07-20 17:55:21 +00:00

This should make the Linux distros happy as it is now easier to leave importlib's tests out of their base Python distribution.
99 lines
2.4 KiB
Python
99 lines
2.4 KiB
Python
import abc
|
|
import unittest
|
|
|
|
|
|
class FinderTests(unittest.TestCase, metaclass=abc.ABCMeta):
|
|
|
|
"""Basic tests for a finder to pass."""
|
|
|
|
@abc.abstractmethod
|
|
def test_module(self):
|
|
# Test importing a top-level module.
|
|
pass
|
|
|
|
@abc.abstractmethod
|
|
def test_package(self):
|
|
# Test importing a package.
|
|
pass
|
|
|
|
@abc.abstractmethod
|
|
def test_module_in_package(self):
|
|
# Test importing a module contained within a package.
|
|
# A value for 'path' should be used if for a meta_path finder.
|
|
pass
|
|
|
|
@abc.abstractmethod
|
|
def test_package_in_package(self):
|
|
# Test importing a subpackage.
|
|
# A value for 'path' should be used if for a meta_path finder.
|
|
pass
|
|
|
|
@abc.abstractmethod
|
|
def test_package_over_module(self):
|
|
# Test that packages are chosen over modules.
|
|
pass
|
|
|
|
@abc.abstractmethod
|
|
def test_failure(self):
|
|
# Test trying to find a module that cannot be handled.
|
|
pass
|
|
|
|
|
|
class LoaderTests(unittest.TestCase, metaclass=abc.ABCMeta):
|
|
|
|
@abc.abstractmethod
|
|
def test_module(self):
|
|
"""A module should load without issue.
|
|
|
|
After the loader returns the module should be in sys.modules.
|
|
|
|
Attributes to verify:
|
|
|
|
* __file__
|
|
* __loader__
|
|
* __name__
|
|
* No __path__
|
|
|
|
"""
|
|
pass
|
|
|
|
@abc.abstractmethod
|
|
def test_package(self):
|
|
"""Loading a package should work.
|
|
|
|
After the loader returns the module should be in sys.modules.
|
|
|
|
Attributes to verify:
|
|
|
|
* __name__
|
|
* __file__
|
|
* __package__
|
|
* __path__
|
|
* __loader__
|
|
|
|
"""
|
|
pass
|
|
|
|
@abc.abstractmethod
|
|
def test_lacking_parent(self):
|
|
"""A loader should not be dependent on it's parent package being
|
|
imported."""
|
|
pass
|
|
|
|
@abc.abstractmethod
|
|
def test_module_reuse(self):
|
|
"""If a module is already in sys.modules, it should be reused."""
|
|
pass
|
|
|
|
@abc.abstractmethod
|
|
def test_state_after_failure(self):
|
|
"""If a module is already in sys.modules and a reload fails
|
|
(e.g. a SyntaxError), the module should be in the state it was before
|
|
the reload began."""
|
|
pass
|
|
|
|
@abc.abstractmethod
|
|
def test_unloadable(self):
|
|
"""Test ImportError is raised when the loader is asked to load a module
|
|
it can't."""
|
|
pass
|