From: Brett Cannon <bcannon@gmail.com> Date: Tue, 27 Jan 2009 02:39:33 +0000 (+0000) Subject: Initial take on importlib.test.loader_tests. X-Git-Tag: v3.1a1~379 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a74ccea968a943e80812901da20fce79726fdee9;p=python Initial take on importlib.test.loader_tests. --- diff --git a/Lib/importlib/NOTES b/Lib/importlib/NOTES index 68e24fd018..4c2e70760d 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 0000000000..15faf0bf4d --- /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