diff options
author | Barry Warsaw <barry@python.org> | 2010-05-18 14:15:20 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2010-05-18 14:15:20 (GMT) |
commit | 04b5684d002de5e3eb4232bb287c6884afb61bf3 (patch) | |
tree | 4a7c6928b97e00d09015b286153dfaf9cf7b7efb | |
parent | 2b80fa693914dcfe7983767328d0b545e0fd4c0e (diff) | |
download | cpython-04b5684d002de5e3eb4232bb287c6884afb61bf3.zip cpython-04b5684d002de5e3eb4232bb287c6884afb61bf3.tar.gz cpython-04b5684d002de5e3eb4232bb287c6884afb61bf3.tar.bz2 |
Repair test failure. Bug 8727.
-rw-r--r-- | Lib/importlib/_bootstrap.py | 12 | ||||
-rw-r--r-- | Lib/importlib/test/source/test_file_loader.py | 3 | ||||
-rw-r--r-- | Lib/test/test_import.py | 1 |
3 files changed, 13 insertions, 3 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index 30d5251..511f7dd 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -494,8 +494,16 @@ class _PyPycFileLoader(PyPycLoader, _PyFileLoader): if ext_type == imp.PY_COMPILED: # We don't really care what the extension on self._base_path is, # as long as it has exactly one dot. - bytecode_path = imp.cache_from_source(self._base_path + '.py') - return (bytecode_path if _path_exists(bytecode_path) else None) + source_path = self._base_path + '.py' + pycache_path = imp.cache_from_source(source_path) + legacy_path = self._base_path + '.pyc' + # The rule is: if the source file exists, then Python always uses + # the __pycache__/foo.<tag>.pyc file. If the source file does not + # exist, then Python uses the legacy path. + pyc_path = (pycache_path + if _path_exists(source_path) + else legacy_path) + return (pyc_path if _path_exists(pyc_path) else None) return super()._find_path(ext_type) @_check_name diff --git a/Lib/importlib/test/source/test_file_loader.py b/Lib/importlib/test/source/test_file_loader.py index 9059405..343e120 100644 --- a/Lib/importlib/test/source/test_file_loader.py +++ b/Lib/importlib/test/source/test_file_loader.py @@ -10,6 +10,8 @@ import stat import sys import unittest +from test.support import make_legacy_pyc + class SimpleTest(unittest.TestCase): @@ -136,6 +138,7 @@ class BadBytecodeTest(unittest.TestCase): file.write(new_bc) if del_source: os.unlink(mapping[name]) + make_legacy_pyc(mapping[name]) return bytecode_path @source_util.writes_bytecode_files diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py index 5649e14..bf689ae 100644 --- a/Lib/test/test_import.py +++ b/Lib/test/test_import.py @@ -142,7 +142,6 @@ class ImportTests(unittest.TestCase): self.assertIs(orig_path, new_os.path) self.assertIsNot(orig_getenv, new_os.getenv) - @unittest.expectedFailure # Issue 8727 is tracking the fix. def test_module_with_large_stack(self, module='longlist'): # Regression test for http://bugs.python.org/issue561858. filename = module + '.py' |