From c4fdfd6f2c911a095cfb6181770cb9b7ae9b1c98 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 22 Oct 2017 12:35:39 +0300 Subject: [PATCH] bpo-28286: Add tests for the mode argument of GzipFile. --- Lib/test/test_gzip.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py index b457bd3f44df65..295d4d4a8fdf3f 100644 --- a/Lib/test/test_gzip.py +++ b/Lib/test/test_gzip.py @@ -431,6 +431,30 @@ def test_fileobj_from_fdopen(self): with gzip.GzipFile(fileobj=f, mode="w") as g: pass + def test_fileobj_mode(self): + gzip.GzipFile(self.filename, "wb").close() + with open(self.filename, "r+b") as f: + with gzip.GzipFile(fileobj=f, mode='r') as g: + self.assertEqual(g.mode, gzip.READ) + with gzip.GzipFile(fileobj=f, mode='w') as g: + self.assertEqual(g.mode, gzip.WRITE) + with gzip.GzipFile(fileobj=f, mode='a') as g: + self.assertEqual(g.mode, gzip.WRITE) + with gzip.GzipFile(fileobj=f, mode='x') as g: + self.assertEqual(g.mode, gzip.WRITE) + with self.assertRaises(ValueError): + gzip.GzipFile(fileobj=f, mode='z') + for mode in "rb", "r+b": + with open(self.filename, mode) as f: + with gzip.GzipFile(fileobj=f) as g: + self.assertEqual(g.mode, gzip.READ) + for mode in "wb", "ab", "xb": + if "x" in mode: + support.unlink(self.filename) + with open(self.filename, mode) as f: + with gzip.GzipFile(fileobj=f) as g: + self.assertEqual(g.mode, gzip.WRITE) + def test_bytes_filename(self): str_filename = self.filename try: