- Issue #22966: Fix __pycache__ pyc file name clobber when pyc_compile is

asked to compile a source file containing multiple dots in the source file
  name.
This commit is contained in:
Barry Warsaw 2014-12-01 17:10:10 -05:00
parent b491e0521f
commit 2a413853f1
4 changed files with 3647 additions and 3626 deletions

View file

@ -99,5 +99,21 @@ class PyCompileTests(unittest.TestCase):
self.assertFalse(os.path.exists(
importlib.util.cache_from_source(bad_coding)))
def test_double_dot_no_clobber(self):
# http://bugs.python.org/issue22966
# py_compile foo.bar.py -> __pycache__/foo.cpython-34.pyc
weird_path = os.path.join(self.directory, 'foo.bar.py')
cache_path = importlib.util.cache_from_source(weird_path)
pyc_path = weird_path + 'c'
self.assertEqual(
'/'.join(cache_path.split('/')[-2:]),
'__pycache__/foo.bar.cpython-34.pyc')
with open(weird_path, 'w') as file:
file.write('x = 123\n')
py_compile.compile(weird_path)
self.assertTrue(os.path.exists(cache_path))
self.assertFalse(os.path.exists(pyc_path))
if __name__ == "__main__":
unittest.main()