diff --git a/Lib/compileall.py b/Lib/compileall.py index d3cff6a98ad..693eda97b13 100644 --- a/Lib/compileall.py +++ b/Lib/compileall.py @@ -228,7 +228,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 fddb538efb1..0505c521d1c 100644 --- a/Lib/test/test_compileall.py +++ b/Lib/test/test_compileall.py @@ -177,6 +177,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 = imp.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 [ diff --git a/Misc/NEWS b/Misc/NEWS index 60e741f8dd1..73625f3a5a7 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -29,6 +29,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 #17919: select.poll.register() again works with poll.POLLNVAL on AIX.