[Python-checkins] r80626 - in python/branches/py3k/Lib: compileall.py test/test_compileall.py
barry.warsaw
python-checkins at python.org
Thu Apr 29 20:43:10 CEST 2010
Author: barry.warsaw
Date: Thu Apr 29 20:43:10 2010
New Revision: 80626
Log:
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
Modified:
python/branches/py3k/Lib/compileall.py
python/branches/py3k/Lib/test/test_compileall.py
Modified: python/branches/py3k/Lib/compileall.py
==============================================================================
--- python/branches/py3k/Lib/compileall.py (original)
+++ python/branches/py3k/Lib/compileall.py Thu Apr 29 20:43:10 2010
@@ -91,13 +91,14 @@
else:
cfile = imp.cache_from_source(fullname)
cache_dir = os.path.dirname(cfile)
- 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 legacy:
+ try:
+ os.mkdir(cache_dir)
+ except OSError as error:
+ if error.errno != errno.EEXIST:
+ raise
if not force:
try:
mtime = int(os.stat(fullname).st_mtime)
Modified: python/branches/py3k/Lib/test/test_compileall.py
==============================================================================
--- python/branches/py3k/Lib/test/test_compileall.py (original)
+++ python/branches/py3k/Lib/test/test_compileall.py Thu Apr 29 20:43:10 2010
@@ -75,6 +75,18 @@
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 @@
finally:
sys.stdout = orig_stdout
+
class CommandLineTests(unittest.TestCase):
"""Test some aspects of compileall's CLI."""
More information about the Python-checkins
mailing list