]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-32695: Docs and tests for compresslevel and preset kwargs in tarfile (GH-21470)
authorZackery Spytz <zspytz@gmail.com>
Mon, 9 Aug 2021 10:05:31 +0000 (03:05 -0700)
committerGitHub <noreply@github.com>
Mon, 9 Aug 2021 10:05:31 +0000 (12:05 +0200)
Co-Authored-By: Bo Bayles <bbayles@gmail.com>
Doc/library/tarfile.rst
Lib/test/test_tarfile.py
Misc/NEWS.d/next/Library/2020-07-13-23-46-59.bpo-32695.tTqqXe.rst [new file with mode: 0644]

index 13088a10d77c57603c8c3f882df5164f04f84ded..6afb8397b7866db2ab8aacabd51ddfea92c101e3 100644 (file)
@@ -102,6 +102,9 @@ Some facts and figures:
    ``'x:bz2'``, :func:`tarfile.open` accepts the keyword argument
    *compresslevel* (default ``9``) to specify the compression level of the file.
 
+   For modes ``'w:xz'`` and ``'x:xz'``, :func:`tarfile.open` accepts the
+   keyword argument *preset* to specify the compression level of the file.
+
    For special purposes, there is a second format for *mode*:
    ``'filemode|[compression]'``.  :func:`tarfile.open` will return a :class:`TarFile`
    object that processes its data as a stream of blocks.  No random seeking will
index 817e6f17997121520657608c33e6d217d64904b2..cfdda24a269f560cd9614e5009e556bbf55fef7b 100644 (file)
@@ -1706,15 +1706,30 @@ class CreateTest(WriteTestBase, unittest.TestCase):
 
 
 class GzipCreateTest(GzipTest, CreateTest):
-    pass
+
+    def test_create_with_compresslevel(self):
+        with tarfile.open(tmpname, self.mode, compresslevel=1) as tobj:
+            tobj.add(self.file_path)
+        with tarfile.open(tmpname, 'r:gz', compresslevel=1) as tobj:
+            pass
 
 
 class Bz2CreateTest(Bz2Test, CreateTest):
-    pass
+
+    def test_create_with_compresslevel(self):
+        with tarfile.open(tmpname, self.mode, compresslevel=1) as tobj:
+            tobj.add(self.file_path)
+        with tarfile.open(tmpname, 'r:bz2', compresslevel=1) as tobj:
+            pass
 
 
 class LzmaCreateTest(LzmaTest, CreateTest):
-    pass
+
+    # Unlike gz and bz2, xz uses the preset keyword instead of compresslevel.
+    # It does not allow for preset to be specified when reading.
+    def test_create_with_preset(self):
+        with tarfile.open(tmpname, self.mode, preset=1) as tobj:
+            tobj.add(self.file_path)
 
 
 class CreateWithXModeTest(CreateTest):
diff --git a/Misc/NEWS.d/next/Library/2020-07-13-23-46-59.bpo-32695.tTqqXe.rst b/Misc/NEWS.d/next/Library/2020-07-13-23-46-59.bpo-32695.tTqqXe.rst
new file mode 100644 (file)
index 0000000..c71316e
--- /dev/null
@@ -0,0 +1,2 @@
+The *compresslevel* and *preset* keyword arguments of :func:`tarfile.open`
+are now both documented and tested.