mirror of
https://github.com/python/cpython.git
synced 2025-10-17 12:18:23 +00:00
Bug 8527 - multiple compileall calls produce cascading __pycache__ directories.
* Patch contributed by Arfrever Frehtes Taifersar Arahesis. * Test added by Barry Also, improve Makefile's deletion of __pycache__ directories so e.g. 'make distclean' doesn't fail if no __pycache__ directories exist.
This commit is contained in:
parent
a1af3e0b9e
commit
c04317fdc4
3 changed files with 21 additions and 1 deletions
|
@ -45,6 +45,8 @@ def compile_dir(dir, maxlevels=10, ddir=None,
|
||||||
names.sort()
|
names.sort()
|
||||||
success = 1
|
success = 1
|
||||||
for name in names:
|
for name in names:
|
||||||
|
if name == '__pycache__':
|
||||||
|
continue
|
||||||
fullname = os.path.join(dir, name)
|
fullname = os.path.join(dir, name)
|
||||||
if ddir is not None:
|
if ddir is not None:
|
||||||
dfile = os.path.join(ddir, name)
|
dfile = os.path.join(ddir, name)
|
||||||
|
|
|
@ -150,6 +150,24 @@ class CommandLineTests(unittest.TestCase):
|
||||||
expected.sort()
|
expected.sort()
|
||||||
self.assertEqual(sorted(os.listdir(self.pkgdir)), expected)
|
self.assertEqual(sorted(os.listdir(self.pkgdir)), expected)
|
||||||
|
|
||||||
|
def test_multiple_runs(self):
|
||||||
|
# Bug 8527 reported that multiple calls produced empty
|
||||||
|
# __pycache__/__pycache__ directories.
|
||||||
|
retcode = subprocess.call(
|
||||||
|
(sys.executable, '-m', 'compileall', '-q', self.pkgdir))
|
||||||
|
self.assertEqual(retcode, 0)
|
||||||
|
# Verify the __pycache__ directory contents.
|
||||||
|
cachedir = os.path.join(self.pkgdir, '__pycache__')
|
||||||
|
self.assertTrue(os.path.exists(cachedir))
|
||||||
|
cachecachedir = os.path.join(cachedir, '__pycache__')
|
||||||
|
self.assertFalse(os.path.exists(cachecachedir))
|
||||||
|
# Call compileall again.
|
||||||
|
retcode = subprocess.call(
|
||||||
|
(sys.executable, '-m', 'compileall', '-q', self.pkgdir))
|
||||||
|
self.assertEqual(retcode, 0)
|
||||||
|
self.assertTrue(os.path.exists(cachedir))
|
||||||
|
self.assertFalse(os.path.exists(cachecachedir))
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
support.run_unittest(
|
support.run_unittest(
|
||||||
|
|
|
@ -1161,7 +1161,7 @@ TAGS::
|
||||||
# files, which clobber removes as well
|
# files, which clobber removes as well
|
||||||
pycremoval:
|
pycremoval:
|
||||||
find $(srcdir) -name '*.py[co]' -exec rm -f {} ';'
|
find $(srcdir) -name '*.py[co]' -exec rm -f {} ';'
|
||||||
find $(srcdir) -name '__pycache__' | xargs rmdir
|
find $(srcdir) -name '__pycache__' -exec rmdir {} ';'
|
||||||
|
|
||||||
rmtestturds:
|
rmtestturds:
|
||||||
-rm -f *BAD *GOOD *SKIPPED
|
-rm -f *BAD *GOOD *SKIPPED
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue