diff options
-rw-r--r-- | Lib/compileall.py | 3 | ||||
-rw-r--r-- | Lib/test/test_compileall.py | 25 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 28 insertions, 3 deletions
diff --git a/Lib/compileall.py b/Lib/compileall.py index 475dc1c8a0..07f50aa3a3 100644 --- a/Lib/compileall.py +++ b/Lib/compileall.py @@ -229,7 +229,8 @@ def main(): success = False return success else: - return compile_path(legacy=args.legacy) + return compile_path(legacy=args.legacy, force=args.force, + quiet=args.quiet) except KeyboardInterrupt: print("\n[interrupted]") return False diff --git a/Lib/test/test_compileall.py b/Lib/test/test_compileall.py index ff2515df4c..2a42238755 100644 --- a/Lib/test/test_compileall.py +++ b/Lib/test/test_compileall.py @@ -5,8 +5,6 @@ import os import py_compile import shutil import struct -import subprocess -import sys import tempfile import time import unittest @@ -181,6 +179,29 @@ class CommandLineTests(unittest.TestCase): self.assertNotCompiled(self.initfn) self.assertNotCompiled(self.barfn) + def test_no_args_respects_force_flag(self): + bazfn = script_helper.make_script(self.directory, 'baz', '') + self.assertRunOK(PYTHONPATH=self.directory) + pycpath = importlib.util.cache_from_source(bazfn) + # Set atime/mtime backward to avoid file timestamp resolution issues + os.utime(pycpath, (time.time()-60,)*2) + mtime = os.stat(pycpath).st_mtime + # Without force, no recompilation + self.assertRunOK(PYTHONPATH=self.directory) + mtime2 = os.stat(pycpath).st_mtime + self.assertEqual(mtime, mtime2) + # Now force it. + self.assertRunOK('-f', PYTHONPATH=self.directory) + mtime2 = os.stat(pycpath).st_mtime + self.assertNotEqual(mtime, mtime2) + + def test_no_args_respects_quiet_flag(self): + script_helper.make_script(self.directory, 'baz', '') + noisy = self.assertRunOK(PYTHONPATH=self.directory) + self.assertIn(b'Listing ', noisy) + quiet = self.assertRunOK('-q', PYTHONPATH=self.directory) + self.assertNotIn(b'Listing ', quiet) + # Ensure that the default behavior of compileall's CLI is to create # PEP 3147 pyc/pyo files. for name, ext, switch in [ @@ -44,6 +44,9 @@ Core and Builtins Library ------- +- Issue #19532: python -m compileall with no filename/directory arguments now + respects the -f and -q flags instead of ignoring them. + - Issue #19623: Fixed writing to unseekable files in the aifc module. - Issue #19946: multiprocessing.spawn now raises ImportError when the module to |