]> granicus.if.org Git - python/commitdiff
bpo-28286: Add tests for the mode argument of GzipFile. (GH-4074) (#4076)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sun, 22 Oct 2017 11:53:43 +0000 (04:53 -0700)
committerSerhiy Storchaka <storchaka@gmail.com>
Sun, 22 Oct 2017 11:53:43 +0000 (14:53 +0300)
(cherry picked from commit bcbdd2f8db396c3f0ec9186162b39b5a34effa0e)

Lib/test/test_gzip.py

index b457bd3f44df6511c0fdb7dd956413da16851841..295d4d4a8fdf3fc0b2b502a90cb45ab2c9a71637 100644 (file)
@@ -431,6 +431,30 @@ class TestGzip(BaseTest):
             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: