]> granicus.if.org Git - python/commitdiff
Close #11548: Correctly handle format argument in shutil.unpack_archive
authorNick Coghlan <ncoghlan@gmail.com>
Wed, 16 Mar 2011 17:52:20 +0000 (13:52 -0400)
committerNick Coghlan <ncoghlan@gmail.com>
Wed, 16 Mar 2011 17:52:20 +0000 (13:52 -0400)
Lib/shutil.py
Lib/test/test_shutil.py

index d47c67c6bcb9f65f9b2a976ef00e85ba41c5201f..aafe04e7b1a0b9b7f6cb426ed424300f9518aea3 100644 (file)
@@ -737,8 +737,8 @@ def unpack_archive(filename, extract_dir=None, format=None):
         except KeyError:
             raise ValueError("Unknown unpack format '{0}'".format(format))
 
-        func = format_info[0]
-        func(filename, extract_dir, **dict(format_info[1]))
+        func = format_info[1]
+        func(filename, extract_dir, **dict(format_info[2]))
     else:
         # we need to look at the registered unpackers supported extensions
         format = _find_unpack_format(filename)
index 30d9e07e35d2dfc6d6d8b9b883636a2f28b5f0ad..8d003a8f980ee0f7f2aed53c81c32a3f14db1182 100644 (file)
@@ -645,6 +645,14 @@ class TestShutil(unittest.TestCase):
             diff = self._compare_dirs(tmpdir, tmpdir2)
             self.assertEqual(diff, [])
 
+            # and again, this time with the format specified
+            tmpdir3 = self.mkdtemp()
+            unpack_archive(filename, tmpdir3, format=format)
+            diff = self._compare_dirs(tmpdir, tmpdir3)
+            self.assertEqual(diff, [])
+        self.assertRaises(shutil.ReadError, unpack_archive, TESTFN)
+        self.assertRaises(ValueError, unpack_archive, TESTFN, format='xxx')
+
     def test_unpack_registery(self):
 
         formats = get_unpack_formats()