summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xLib/tarfile.py16
-rw-r--r--Lib/test/test_tarfile.py15
-rw-r--r--Misc/NEWS3
3 files changed, 26 insertions, 8 deletions
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index 9e291c2..37e4dcd 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 e527e40..c135304 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 dc89959..b411abf 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?
==============================