[Python-Dev] [Python-checkins] cpython (3.4): - Issue #22966: Fix __pycache__ pyc file name clobber when pyc_compile is

Jeremy Kloth jeremy.kloth at gmail.com
Tue Dec 2 14:44:01 CET 2014


On Mon, Dec 1, 2014 at 4:17 PM, barry.warsaw <python-checkins at python.org> wrote:
> summary:
>   - 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.
>
> diff --git a/Lib/test/test_py_compile.py b/Lib/test/test_py_compile.py
> --- a/Lib/test/test_py_compile.py
> +++ b/Lib/test/test_py_compile.py
> @@ -99,5 +99,21 @@
>          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))
> +
> +

This test is failing on the Windows buildbots due to the hard-coded
path separator.  Using `os.pathsep` should work assuming that
importlib returns normalized paths.

-- 
Jeremy Kloth


More information about the Python-Dev mailing list