bpo-37523: Raise ValueError for I/O operations on a closed zipfile.ZipExtFile. (GH-14658)
Raises ValueError when calling the following on a closed zipfile.ZipExtFile: read, readable, seek, seekable, tell.
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index 1e1854b..66f05ac 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -571,6 +571,20 @@
with open(TESTFN, "rb") as f:
self.assertEqual(zipfp.read(TESTFN), f.read())
+ def test_io_on_closed_zipextfile(self):
+ fname = "somefile.txt"
+ with zipfile.ZipFile(TESTFN2, mode="w") as zipfp:
+ zipfp.writestr(fname, "bogus")
+
+ with zipfile.ZipFile(TESTFN2, mode="r") as zipfp:
+ with zipfp.open(fname) as fid:
+ fid.close()
+ self.assertRaises(ValueError, fid.read)
+ self.assertRaises(ValueError, fid.seek, 0)
+ self.assertRaises(ValueError, fid.tell)
+ self.assertRaises(ValueError, fid.readable)
+ self.assertRaises(ValueError, fid.seekable)
+
def test_write_to_readonly(self):
"""Check that trying to call write() on a readonly ZipFile object
raises a ValueError."""