Issue #28227: gzip now supports pathlib

Patch by Ethan Furman.
This commit is contained in:
Berker Peksag 2016-10-02 13:47:58 +03:00
parent 8e9045d0d8
commit 03020cfa97
4 changed files with 32 additions and 1 deletions

View file

@ -5,6 +5,7 @@ import unittest
from test import support
from test.support import bigmemtest, _4G
import os
import pathlib
import io
import struct
import array
@ -67,6 +68,18 @@ class TestGzip(BaseTest):
# Test multiple close() calls.
f.close()
def test_write_read_with_pathlike_file(self):
filename = pathlib.Path(self.filename)
with gzip.GzipFile(filename, 'w') as f:
f.write(data1 * 50)
self.assertIsInstance(f.name, str)
with gzip.GzipFile(filename, 'a') as f:
f.write(data1)
with gzip.GzipFile(filename) as f:
d = f.read()
self.assertEqual(d, data1 * 51)
self.assertIsInstance(f.name, str)
# The following test_write_xy methods test that write accepts
# the corresponding bytes-like object type as input
# and that the data written equals bytes(xy) in all cases.
@ -521,6 +534,15 @@ class TestOpen(BaseTest):
file_data = gzip.decompress(f.read())
self.assertEqual(file_data, uncompressed)
def test_pathlike_file(self):
filename = pathlib.Path(self.filename)
with gzip.open(filename, "wb") as f:
f.write(data1 * 50)
with gzip.open(filename, "ab") as f:
f.write(data1)
with gzip.open(filename) as f:
self.assertEqual(f.read(), data1 * 51)
def test_implicit_binary_modes(self):
# Test implicit binary modes (no "b" or "t" in mode string).
uncompressed = data1 * 50