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
|
@ -45,6 +45,8 @@ def compile_dir(dir, maxlevels=10, ddir=None,
|
|||
names.sort()
|
||||
success = 1
|
||||
for name in names:
|
||||
if name == '__pycache__':
|
||||
continue
|
||||
fullname = os.path.join(dir, name)
|
||||
if ddir is not None:
|
||||
dfile = os.path.join(ddir, name)
|
||||
|
|
|
@ -150,6 +150,24 @@ class CommandLineTests(unittest.TestCase):
|
|||
expected.sort()
|
||||
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():
|
||||
support.run_unittest(
|
||||
|
|
|
@ -1161,7 +1161,7 @@ TAGS::
|
|||
# files, which clobber removes as well
|
||||
pycremoval:
|
||||
find $(srcdir) -name '*.py[co]' -exec rm -f {} ';'
|
||||
find $(srcdir) -name '__pycache__' | xargs rmdir
|
||||
find $(srcdir) -name '__pycache__' -exec rmdir {} ';'
|
||||
|
||||
rmtestturds:
|
||||
-rm -f *BAD *GOOD *SKIPPED
|
||||
|
|
Loading…
Reference in New Issue