summaryrefslogtreecommitdiffstats
path: root/Lib/importlib
diff options
context:
space:
mode:
authorBrett Cannon <bcannon@gmail.com>2009-01-27 02:39:33 (GMT)
committerBrett Cannon <bcannon@gmail.com>2009-01-27 02:39:33 (GMT)
commita74ccea968a943e80812901da20fce79726fdee9 (patch)
tree44d8f42f4c4a6ed9525b04e1b2b7ff7f955fefa5 /Lib/importlib
parent73662a54f59e34e843351756dace90f5c046c1ca (diff)
downloadcpython-a74ccea968a943e80812901da20fce79726fdee9.zip
cpython-a74ccea968a943e80812901da20fce79726fdee9.tar.gz
cpython-a74ccea968a943e80812901da20fce79726fdee9.tar.bz2
Initial take on importlib.test.loader_tests.
Diffstat (limited to 'Lib/importlib')
-rw-r--r--Lib/importlib/NOTES13
-rw-r--r--Lib/importlib/test/loader_tests.py61
2 files changed, 66 insertions, 8 deletions
diff --git a/Lib/importlib/NOTES b/Lib/importlib/NOTES
index 68e24fd..4c2e707 100644
--- a/Lib/importlib/NOTES
+++ b/Lib/importlib/NOTES
@@ -1,15 +1,12 @@
to do
/////
-* Standardized loader tests.
+* Use test.loader_tests
- + Create test.loader_tests.
- + Use
-
- - builtin
- - frozen
- - extension
- -source
+ + builtin
+ + frozen
+ + extension
+ + source
* Reorganize support code.
diff --git a/Lib/importlib/test/loader_tests.py b/Lib/importlib/test/loader_tests.py
new file mode 100644
index 0000000..15faf0b
--- /dev/null
+++ b/Lib/importlib/test/loader_tests.py
@@ -0,0 +1,61 @@
+import abc
+import unittest
+
+
+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:
+
+ * __file__
+ * __loader__
+ * __name__
+ * __path__
+
+ """
+ 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