From 94987826e89e8a89c20f081e18be33fc840e6203 Mon Sep 17 00:00:00 2001 From: Garvit Khatri Date: Thu, 25 May 2017 03:49:50 +0530 Subject: bpo-29851: Have importlib.reload() raise ImportError if the module's spec is not found (GH-972) --- Lib/test/test_importlib/test_api.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'Lib/test/test_importlib/test_api.py') diff --git a/Lib/test/test_importlib/test_api.py b/Lib/test/test_importlib/test_api.py index b0a94aaff5..50dbfe1eda 100644 --- a/Lib/test/test_importlib/test_api.py +++ b/Lib/test/test_importlib/test_api.py @@ -197,8 +197,6 @@ class FindLoaderPEP302Tests(FindLoaderTests): class ReloadTests: - """Test module reloading for builtin and extension modules.""" - def test_reload_modules(self): for mod in ('tokenize', 'time', 'marshal'): with self.subTest(module=mod): @@ -361,6 +359,18 @@ class ReloadTests: reloaded = self.init.reload(ham) self.assertIs(reloaded, ham) + def test_module_missing_spec(self): + #Test that reload() throws ModuleNotFounderror when reloading + # a module who's missing a spec. (bpo-29851) + name = 'spam' + with test_util.uncache(name): + module = sys.modules[name] = types.ModuleType(name) + # Sanity check by attempting an import. + module = self.init.import_module(name) + self.assertIsNone(module.__spec__) + with self.assertRaises(ModuleNotFoundError): + self.init.reload(module) + (Frozen_ReloadTests, Source_ReloadTests -- cgit v1.2.1