From 3c2738488ab893017c26e529ee2ebedd41bbb263 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Mon, 20 Jul 2009 00:14:29 +0000 Subject: Some tests in importlib.test.source.test_abc_loader were testing what happens when a loader is given missing or bad code object bytecode. Unfortunately an exception related to source paths was masking what the proper exception to test should be. Making the test explicitly set the environment fixed the test. The code being test was not affected. --- Lib/importlib/test/source/test_abc_loader.py | 24 ++++++++++++++++-------- Misc/NEWS | 4 ++++ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Lib/importlib/test/source/test_abc_loader.py b/Lib/importlib/test/source/test_abc_loader.py index 6c17d6a..6465d26 100644 --- a/Lib/importlib/test/source/test_abc_loader.py +++ b/Lib/importlib/test/source/test_abc_loader.py @@ -348,19 +348,27 @@ class BadBytecodeFailureTests(unittest.TestCase): # A bad magic number should lead to an ImportError. name = 'mod' bad_magic = b'\x00\x00\x00\x00' - mock = PyPycLoaderMock({}, {name: {'path': os.path.join('path', 'to', - 'mod'), - 'magic': bad_magic}}) + bc = {name: + {'path': os.path.join('path', 'to', 'mod'), + 'magic': bad_magic}} + mock = PyPycLoaderMock({name: None}, bc) with util.uncache(name), self.assertRaises(ImportError): mock.load_module(name) + def test_no_bytecode(self): + # Missing code object bytecode should lead to an EOFError. + name = 'mod' + bc = {name: {'path': os.path.join('path', 'to', 'mod'), 'bc': b''}} + mock = PyPycLoaderMock({name: None}, bc) + with util.uncache(name), self.assertRaises(EOFError): + mock.load_module(name) + def test_bad_bytecode(self): - # Bad code object bytecode should lead to an ImportError. + # Malformed code object bytecode should lead to a ValueError. name = 'mod' - mock = PyPycLoaderMock({}, {name: {'path': os.path.join('path', 'to', - 'mod'), - 'bc': b''}}) - with util.uncache(name), self.assertRaises(ImportError): + bc = {name: {'path': os.path.join('path', 'to', 'mod'), 'bc': b'XXX'}} + mock = PyPycLoaderMock({name: None}, bc) + with util.uncache(name), self.assertRaises(ValueError): mock.load_module(name) diff --git a/Misc/NEWS b/Misc/NEWS index cbe5607..4b94ede 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -88,6 +88,10 @@ Build Tests ----- +- Fixed tests in importlib.test.source.test_abc_loader that were masking + the proper exceptions that should be raised for missing or improper code + object bytecode. + - Removed importlib's custom test discovery code and switched to unittest.TestLoader.discover(). -- cgit v0.12