diff options
Diffstat (limited to 'Lib/importlib/test/source')
-rw-r--r-- | Lib/importlib/test/source/test_file_loader.py | 17 | ||||
-rw-r--r-- | Lib/importlib/test/source/test_finder.py | 12 | ||||
-rw-r--r-- | Lib/importlib/test/source/test_path_hook.py | 4 |
3 files changed, 32 insertions, 1 deletions
diff --git a/Lib/importlib/test/source/test_file_loader.py b/Lib/importlib/test/source/test_file_loader.py index 0a85bc4..ce6f5d4 100644 --- a/Lib/importlib/test/source/test_file_loader.py +++ b/Lib/importlib/test/source/test_file_loader.py @@ -1,6 +1,7 @@ import importlib from importlib import _bootstrap from .. import abc +from .. import util from . import util as source_util import imp @@ -108,6 +109,22 @@ class SimpleTest(unittest.TestCase): loader.load_module('_temp') self.assertTrue('_temp' not in sys.modules) + def test_file_from_empty_string_dir(self): + # Loading a module found from an empty string entry on sys.path should + # not only work, but keep all attributes relative. + with open('_temp.py', 'w') as file: + file.write("# test file for importlib") + try: + with util.uncache('_temp'): + loader = _bootstrap._SourceFileLoader('_temp', '_temp.py') + mod = loader.load_module('_temp') + self.assertEqual('_temp.py', mod.__file__) + self.assertEqual(imp.cache_from_source('_temp.py'), + mod.__cached__) + + finally: + os.unlink('_temp.py') + class BadBytecodeTest(unittest.TestCase): diff --git a/Lib/importlib/test/source/test_finder.py b/Lib/importlib/test/source/test_finder.py index 12bab8f..7b9088d 100644 --- a/Lib/importlib/test/source/test_finder.py +++ b/Lib/importlib/test/source/test_finder.py @@ -115,7 +115,6 @@ class FinderTests(abc.FinderTests): # [package over modules] def test_package_over_module(self): - # XXX This is not a blackbox test! name = '_temp' loader = self.run_test(name, {'{0}.__init__'.format(name), name}) self.assertTrue('__init__' in loader.get_filename(name)) @@ -133,6 +132,17 @@ class FinderTests(abc.FinderTests): with self.assertRaises(ImportWarning): self.run_test('pkg', {'pkg.__init__'}, unlink={'pkg.__init__'}) + def test_empty_string_for_dir(self): + # The empty string from sys.path means to search in the cwd. + finder = _bootstrap._FileFinder('', _bootstrap._SourceFinderDetails()) + with open('mod.py', 'w') as file: + file.write("# test file for importlib") + try: + loader = finder.find_module('mod') + self.assertTrue(hasattr(loader, 'load_module')) + finally: + os.unlink('mod.py') + def test_main(): from test.support import run_unittest diff --git a/Lib/importlib/test/source/test_path_hook.py b/Lib/importlib/test/source/test_path_hook.py index 8697f0c..374f7b6 100644 --- a/Lib/importlib/test/source/test_path_hook.py +++ b/Lib/importlib/test/source/test_path_hook.py @@ -12,6 +12,10 @@ class PathHookTest(unittest.TestCase): self.assertTrue(hasattr(_bootstrap._file_path_hook(mapping['.root']), 'find_module')) + def test_empty_string(self): + # The empty string represents the cwd. + self.assertTrue(hasattr(_bootstrap._file_path_hook(''), 'find_module')) + def test_main(): from test.support import run_unittest |