diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2008-12-27 15:43:12 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2008-12-27 15:43:12 (GMT) |
commit | 6f193e0e959432f2227c0380b970a82f58c8a0c8 (patch) | |
tree | 95cc667e9098a337288573b4e37ea93a4d0c7fdd /Lib/test/test_zipfile.py | |
parent | e57e9990e72f83963a34c37c985bc72c5f27eae5 (diff) | |
download | cpython-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.py | 39 |
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 |