From 832dd5f0d65d3a0ebd7d7c7a3a4c80ab5170cd08 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 10 Feb 2015 08:45:53 +0200 Subject: [PATCH] Issue #23421: Fixed compression in tarfile CLI. Patch by wdv4758h. --- Lib/tarfile.py | 16 ++++++++-------- Lib/test/test_tarfile.py | 15 +++++++++++++++ Misc/NEWS | 3 +++ 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 9e291c2a584..37e4dcd0e9b 100755 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -2491,16 +2491,16 @@ def main(): _, ext = os.path.splitext(tar_name) compressions = { # gz - 'gz': 'gz', - 'tgz': 'gz', + '.gz': 'gz', + '.tgz': 'gz', # xz - 'xz': 'xz', - 'txz': 'xz', + '.xz': 'xz', + '.txz': 'xz', # bz2 - 'bz2': 'bz2', - 'tbz': 'bz2', - 'tbz2': 'bz2', - 'tb2': 'bz2', + '.bz2': 'bz2', + '.tbz': 'bz2', + '.tbz2': 'bz2', + '.tb2': 'bz2', } tar_mode = 'w:' + compressions[ext] if ext in compressions else 'w' tar_files = args.create diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index e527e403fa6..c135304f407 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -1994,6 +1994,21 @@ class CommandLineTest(unittest.TestCase): finally: support.unlink(tar_name) + def test_create_command_compressed(self): + files = [support.findfile('tokenize_tests.txt'), + support.findfile('tokenize_tests-no-coding-cookie-' + 'and-utf8-bom-sig-only.txt')] + for filetype in (GzipTest, Bz2Test, LzmaTest): + if not filetype.open: + continue + try: + tar_name = tmpname + '.' + filetype.suffix + out = self.tarfilecmd('-c', tar_name, *files) + with filetype.taropen(tar_name) as tar: + tar.getmembers() + finally: + support.unlink(tar_name) + def test_extract_command(self): self.make_simple_tarfile(tmpname) for opt in '-e', '--extract': diff --git a/Misc/NEWS b/Misc/NEWS index dc899596989..b411abf2828 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -13,8 +13,11 @@ Core and Builtins Library ------- +- Issue #23421: Fixed compression in tarfile CLI. Patch by wdv4758h. + - Issue #23361: Fix possible overflow in Windows subprocess creation code. + What's New in Python 3.4.3rc1? ==============================