summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_zipfile.py
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2008-01-07 18:47:44 (GMT)
committerGeorg Brandl <georg@python.org>2008-01-07 18:47:44 (GMT)
commit62416bcf5ad46019f758aa212b05b3d60cb71ef3 (patch)
tree168c2f432e63ebc9265a93e41274c5ca53513a48 /Lib/test/test_zipfile.py
parent76b30d1688a7ba1ff1b01a3eb21bf4890f71d404 (diff)
downloadcpython-62416bcf5ad46019f758aa212b05b3d60cb71ef3.zip
cpython-62416bcf5ad46019f758aa212b05b3d60cb71ef3.tar.gz
cpython-62416bcf5ad46019f758aa212b05b3d60cb71ef3.tar.bz2
#467924, patch by Alan McIntyre: Add ZipFile.extract and ZipFile.extractall.
Diffstat (limited to 'Lib/test/test_zipfile.py')
-rw-r--r--Lib/test/test_zipfile.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index 3d2f9bd..40003aa 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -16,6 +16,11 @@ from test.test_support import TESTFN, run_unittest
TESTFN2 = TESTFN + "2"
FIXEDTEST_SIZE = 1000
+SMALL_TEST_DATA = [('_ziptest1', '1q2w3e4r5t'),
+ ('ziptest2dir/_ziptest2', 'qawsedrftg'),
+ ('/ziptest2dir/ziptest3dir/_ziptest3', 'azsxdcfvgb'),
+ ('ziptest2dir/ziptest3dir/ziptest4dir/_ziptest3', '6y7u8i9o0p')]
+
class TestsWithSourceFile(unittest.TestCase):
def setUp(self):
self.line_gen = ["Zipfile test line %d. random float: %f" % (i, random())
@@ -296,6 +301,57 @@ class TestsWithSourceFile(unittest.TestCase):
self.assertRaises(RuntimeError, zipf.write, TESTFN)
zipf.close()
+ def testExtract(self):
+ zipfp = zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED)
+ for fpath, fdata in SMALL_TEST_DATA:
+ zipfp.writestr(fpath, fdata)
+ zipfp.close()
+
+ zipfp = zipfile.ZipFile(TESTFN2, "r")
+ for fpath, fdata in SMALL_TEST_DATA:
+ writtenfile = zipfp.extract(fpath)
+
+ # make sure it was written to the right place
+ if os.path.isabs(fpath):
+ correctfile = os.path.join(os.getcwd(), fpath[1:])
+ else:
+ correctfile = os.path.join(os.getcwd(), fpath)
+
+ self.assertEqual(writtenfile, correctfile)
+
+ # make sure correct data is in correct file
+ self.assertEqual(fdata, file(writtenfile, "rb").read())
+
+ os.remove(writtenfile)
+
+ zipfp.close()
+
+ # remove the test file subdirectories
+ shutil.rmtree(os.path.join(os.getcwd(), 'ziptest2dir'))
+
+ def testExtractAll(self):
+ zipfp = zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED)
+ for fpath, fdata in SMALL_TEST_DATA:
+ zipfp.writestr(fpath, fdata)
+ zipfp.close()
+
+ zipfp = zipfile.ZipFile(TESTFN2, "r")
+ zipfp.extractall()
+ for fpath, fdata in SMALL_TEST_DATA:
+ if os.path.isabs(fpath):
+ outfile = os.path.join(os.getcwd(), fpath[1:])
+ else:
+ outfile = os.path.join(os.getcwd(), fpath)
+
+ self.assertEqual(fdata, file(outfile, "rb").read())
+
+ os.remove(outfile)
+
+ zipfp.close()
+
+ # remove the test file subdirectories
+ shutil.rmtree(os.path.join(os.getcwd(), 'ziptest2dir'))
+
def tearDown(self):
os.remove(TESTFN)
os.remove(TESTFN2)