summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-02-10 06:47:10 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-02-10 06:47:10 (GMT)
commit4bdcfce5129fbf2d710046b4d3f9be636e9e0898 (patch)
tree4f4eb016460584352945779f7199fd68eb1728a2
parent5ef01e9b93493a1ca8746b956a70972ef52b3791 (diff)
parent832dd5f0d65d3a0ebd7d7c7a3a4c80ab5170cd08 (diff)
downloadcpython-4bdcfce5129fbf2d710046b4d3f9be636e9e0898.zip
cpython-4bdcfce5129fbf2d710046b4d3f9be636e9e0898.tar.gz
cpython-4bdcfce5129fbf2d710046b4d3f9be636e9e0898.tar.bz2
Issue #23421: Fixed compression in tarfile CLI. Patch by wdv4758h.
-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 4b4e0d3..06436eb 100755
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -2494,16 +2494,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 810b76b..ef71f5e 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -2006,6 +2006,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 12a3762..d704e64 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -13,12 +13,15 @@ Core and Builtins
Library
-------
+- Issue #23421: Fixed compression in tarfile CLI. Patch by wdv4758h.
+
- Issue #23361: Fix possible overflow in Windows subprocess creation code.
- logging.handlers.QueueListener now takes a respect_handler_level keyword
argument which, if set to True, will pass messages to handlers taking handler
levels into account.
+
What's New in Python 3.5 alpha 1?
=================================