Bug 8563 - compileall.compile_file() creates empty __pycache__ directories in
data directories where there is no source. Fix by: Arfrever Frehtes Taifersar Arahesis (Arfrever) Test by: Barry
This commit is contained in:
parent
d5334e1fa3
commit
c8a99de751
|
@ -91,13 +91,14 @@ def compile_file(fullname, ddir=None, force=0, rx=None, quiet=False,
|
|||
else:
|
||||
cfile = imp.cache_from_source(fullname)
|
||||
cache_dir = os.path.dirname(cfile)
|
||||
head, tail = name[:-3], name[-3:]
|
||||
if tail == '.py':
|
||||
if not legacy:
|
||||
try:
|
||||
os.mkdir(cache_dir)
|
||||
except OSError as error:
|
||||
if error.errno != errno.EEXIST:
|
||||
raise
|
||||
head, tail = name[:-3], name[-3:]
|
||||
if tail == '.py':
|
||||
if not force:
|
||||
try:
|
||||
mtime = int(os.stat(fullname).st_mtime)
|
||||
|
|
|
@ -75,6 +75,18 @@ class CompileallTests(unittest.TestCase):
|
|||
os.unlink(self.bc_path)
|
||||
os.unlink(self.bc_path2)
|
||||
|
||||
def test_no_pycache_in_non_package(self):
|
||||
# Bug 8563 reported that __pycache__ directories got created by
|
||||
# compile_file() for non-.py files.
|
||||
data_dir = os.path.join(self.directory, 'data')
|
||||
data_file = os.path.join(data_dir, 'file')
|
||||
os.mkdir(data_dir)
|
||||
# touch data/file
|
||||
with open(data_file, 'w'):
|
||||
pass
|
||||
compileall.compile_file(data_file)
|
||||
self.assertFalse(os.path.exists(os.path.join(data_dir, '__pycache__')))
|
||||
|
||||
|
||||
class EncodingTest(unittest.TestCase):
|
||||
"""Issue 6716: compileall should escape source code when printing errors
|
||||
|
@ -98,6 +110,7 @@ class EncodingTest(unittest.TestCase):
|
|||
finally:
|
||||
sys.stdout = orig_stdout
|
||||
|
||||
|
||||
class CommandLineTests(unittest.TestCase):
|
||||
"""Test some aspects of compileall's CLI."""
|
||||
|
||||
|
|
Loading…
Reference in New Issue