summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_zipfile.py
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2008-12-27 15:43:12 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2008-12-27 15:43:12 (GMT)
commit6f193e0e959432f2227c0380b970a82f58c8a0c8 (patch)
tree95cc667e9098a337288573b4e37ea93a4d0c7fdd /Lib/test/test_zipfile.py
parente57e9990e72f83963a34c37c985bc72c5f27eae5 (diff)
downloadcpython-6f193e0e959432f2227c0380b970a82f58c8a0c8.zip
cpython-6f193e0e959432f2227c0380b970a82f58c8a0c8.tar.gz
cpython-6f193e0e959432f2227c0380b970a82f58c8a0c8.tar.bz2
Issue #4756: zipfile.is_zipfile() now supports file-like objects.
Patch by Gabriel Genellina.
Diffstat (limited to 'Lib/test/test_zipfile.py')
-rw-r--r--Lib/test/test_zipfile.py39
1 files changed, 34 insertions, 5 deletions
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index 5e99382..9cc5860 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -634,20 +634,49 @@ class OtherTests(unittest.TestCase):
def testIsZipErroneousFile(self):
# This test checks that the is_zipfile function correctly identifies
# a file that is not a zip file
- fp = open(TESTFN, "w")
- fp.write("this is not a legal zip file\n")
- fp.close()
+
+ # - passing a filename
+ with open(TESTFN, "w") as fp:
+ fp.write("this is not a legal zip file\n")
chk = zipfile.is_zipfile(TESTFN)
- self.assert_(chk is False)
+ self.assert_(not chk)
+ # - passing a file object
+ with open(TESTFN, "rb") as fp:
+ chk = zipfile.is_zipfile(fp)
+ self.assert_(not chk)
+ # - passing a file-like object
+ fp = StringIO()
+ fp.write("this is not a legal zip file\n")
+ chk = zipfile.is_zipfile(fp)
+ self.assert_(not chk)
+ fp.seek(0,0)
+ chk = zipfile.is_zipfile(fp)
+ self.assert_(not chk)
def testIsZipValidFile(self):
# This test checks that the is_zipfile function correctly identifies
# a file that is a zip file
+
+ # - passing a filename
zipf = zipfile.ZipFile(TESTFN, mode="w")
zipf.writestr("foo.txt", "O, for a Muse of Fire!")
zipf.close()
chk = zipfile.is_zipfile(TESTFN)
- self.assert_(chk is True)
+ self.assert_(chk)
+ # - passing a file object
+ with open(TESTFN, "rb") as fp:
+ chk = zipfile.is_zipfile(fp)
+ self.assert_(chk)
+ fp.seek(0,0)
+ zip_contents = fp.read()
+ # - passing a file-like object
+ fp = StringIO()
+ fp.write(zip_contents)
+ chk = zipfile.is_zipfile(fp)
+ self.assert_(chk)
+ fp.seek(0,0)
+ chk = zipfile.is_zipfile(fp)
+ self.assert_(chk)
def testNonExistentFileRaisesIOError(self):
# make sure we don't raise an AttributeError when a partially-constructed