Issue #23421: Fixed compression in tarfile CLI. Patch by wdv4758h.

This commit is contained in:
Serhiy Storchaka 2015-02-10 08:47:10 +02:00
commit 4bdcfce512
3 changed files with 26 additions and 8 deletions

View File

@ -2494,16 +2494,16 @@ def main():
_, ext = os.path.splitext(tar_name) _, ext = os.path.splitext(tar_name)
compressions = { compressions = {
# gz # gz
'gz': 'gz', '.gz': 'gz',
'tgz': 'gz', '.tgz': 'gz',
# xz # xz
'xz': 'xz', '.xz': 'xz',
'txz': 'xz', '.txz': 'xz',
# bz2 # bz2
'bz2': 'bz2', '.bz2': 'bz2',
'tbz': 'bz2', '.tbz': 'bz2',
'tbz2': 'bz2', '.tbz2': 'bz2',
'tb2': 'bz2', '.tb2': 'bz2',
} }
tar_mode = 'w:' + compressions[ext] if ext in compressions else 'w' tar_mode = 'w:' + compressions[ext] if ext in compressions else 'w'
tar_files = args.create tar_files = args.create

View File

@ -2006,6 +2006,21 @@ class CommandLineTest(unittest.TestCase):
finally: finally:
support.unlink(tar_name) 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): def test_extract_command(self):
self.make_simple_tarfile(tmpname) self.make_simple_tarfile(tmpname)
for opt in '-e', '--extract': for opt in '-e', '--extract':

View File

@ -13,12 +13,15 @@ Core and Builtins
Library Library
------- -------
- Issue #23421: Fixed compression in tarfile CLI. Patch by wdv4758h.
- Issue #23361: Fix possible overflow in Windows subprocess creation code. - Issue #23361: Fix possible overflow in Windows subprocess creation code.
- logging.handlers.QueueListener now takes a respect_handler_level keyword - logging.handlers.QueueListener now takes a respect_handler_level keyword
argument which, if set to True, will pass messages to handlers taking handler argument which, if set to True, will pass messages to handlers taking handler
levels into account. levels into account.
What's New in Python 3.5 alpha 1? What's New in Python 3.5 alpha 1?
================================= =================================