From cc3df6368d4f3f6c9c9b716876c7e7b79c7abf3f Mon Sep 17 00:00:00 2001 From: Ruben Vorderman Date: Thu, 25 Feb 2021 12:30:24 +0100 Subject: [PATCH] bpo-43316: gzip: CLI uses non-zero return code on error. (GH-24647) Exit code is now 1 instead of 0. A message is printed to stderr instead of stdout. This is the proper behaviour for a tool that can be used in scripts. --- Lib/gzip.py | 3 +-- Lib/test/test_gzip.py | 8 ++++---- .../next/Library/2021-02-25-09-44-36.bpo-43316.k9Gyqn.rst | 3 +++ 3 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2021-02-25-09-44-36.bpo-43316.k9Gyqn.rst diff --git a/Lib/gzip.py b/Lib/gzip.py index e422773b3edfb7..8002b43bde97cd 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -583,8 +583,7 @@ def main(): g = sys.stdout.buffer else: if arg[-3:] != ".gz": - print("filename doesn't end in .gz:", repr(arg)) - continue + sys.exit("filename doesn't end in .gz:", repr(arg)) f = open(arg, "rb") g = builtins.open(arg[:-3], "wb") else: diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py index c3fa9b097f8aaa..1bb8f7a2d351c1 100644 --- a/Lib/test/test_gzip.py +++ b/Lib/test/test_gzip.py @@ -774,10 +774,10 @@ def test_decompress_infile_outfile(self): self.assertEqual(err, b'') def test_decompress_infile_outfile_error(self): - rc, out, err = assert_python_ok('-m', 'gzip', '-d', 'thisisatest.out') - self.assertIn(b"filename doesn't end in .gz:", out) - self.assertEqual(rc, 0) - self.assertEqual(err, b'') + rc, out, err = assert_python_failure('-m', 'gzip', '-d', 'thisisatest.out') + self.assertIn(b"filename doesn't end in .gz:", err) + self.assertEqual(rc, 1) + self.assertEqual(out, b'') @create_and_remove_directory(TEMPDIR) def test_compress_stdin_outfile(self): diff --git a/Misc/NEWS.d/next/Library/2021-02-25-09-44-36.bpo-43316.k9Gyqn.rst b/Misc/NEWS.d/next/Library/2021-02-25-09-44-36.bpo-43316.k9Gyqn.rst new file mode 100644 index 00000000000000..1f0d3c499c16f0 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-02-25-09-44-36.bpo-43316.k9Gyqn.rst @@ -0,0 +1,3 @@ +The ``python -m gzip`` command line application now properly fails when +detecting an unsupported extension. It exits with a non-zero exit code and +prints an error message to stderr.