summaryrefslogtreecommitdiff
path: root/Lib/test
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2009-01-24 14:10:07 +0000
committerMartin v. Löwis <martin@v.loewis.de>2009-01-24 14:10:07 +0000
commit757275d94bbca3c4774f0fa31c715097461d7182 (patch)
tree4b4fb3f6f508329fbe6222a9f94b2f28e80d148a /Lib/test
parent5b00a6b91df382ec3918c95d191a672e00c1a3fd (diff)
downloadcpython-757275d94bbca3c4774f0fa31c715097461d7182.tar.gz
Merged revisions 68885 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r68885 | martin.v.loewis | 2009-01-24 15:00:33 +0100 (Sa, 24 Jan 2009) | 3 lines Issue #4710: Extract directories properly in the zipfile module; allow adding directories to a zipfile. ........
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_zipfile.py26
-rw-r--r--Lib/test/zipdir.zipbin0 -> 374 bytes
2 files changed, 25 insertions, 1 deletions
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index 678ac9fc00..3b04ce2ecf 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -9,9 +9,10 @@ from tempfile import TemporaryFile
from random import randint, random
import test.support as support
-from test.support import TESTFN, run_unittest
+from test.support import TESTFN, run_unittest, findfile
TESTFN2 = TESTFN + "2"
+TESTFNDIR = TESTFN + "d"
FIXEDTEST_SIZE = 1000
SMALL_TEST_DATA = [('_ziptest1', '1q2w3e4r5t'),
@@ -1000,6 +1001,28 @@ class TestsWithMultipleOpens(unittest.TestCase):
def tearDown(self):
os.remove(TESTFN2)
+class TestWithDirectory(unittest.TestCase):
+ def setUp(self):
+ os.mkdir(TESTFN2)
+
+ def testExtractDir(self):
+ zipf = zipfile.ZipFile(findfile("zipdir.zip"))
+ zipf.extractall(TESTFN2)
+ self.assertTrue(os.path.isdir(os.path.join(TESTFN2, "a")))
+ self.assertTrue(os.path.isdir(os.path.join(TESTFN2, "a", "b")))
+ self.assertTrue(os.path.exists(os.path.join(TESTFN2, "a", "b", "c")))
+
+ def testStoreDir(self):
+ os.mkdir(os.path.join(TESTFN2, "x"))
+ zipf = zipfile.ZipFile(TESTFN, "w")
+ zipf.write(os.path.join(TESTFN2, "x"), "x")
+ self.assertTrue(zipf.filelist[0].filename.endswith("x/"))
+
+ def tearDown(self):
+ shutil.rmtree(TESTFN2)
+ if os.path.exists(TESTFN):
+ os.remove(TESTFN)
+
class UniversalNewlineTests(unittest.TestCase):
def setUp(self):
@@ -1114,6 +1137,7 @@ class UniversalNewlineTests(unittest.TestCase):
def test_main():
run_unittest(TestsWithSourceFile, TestZip64InSmallFiles, OtherTests,
PyZipFileTests, DecryptionTests, TestsWithMultipleOpens,
+ TestWithDirectory,
UniversalNewlineTests, TestsWithRandomBinaryFiles)
if __name__ == "__main__":
diff --git a/Lib/test/zipdir.zip b/Lib/test/zipdir.zip
new file mode 100644
index 0000000000..ac21d7a1ed
--- /dev/null
+++ b/Lib/test/zipdir.zip
Binary files differ