mirror of
https://github.com/python/cpython.git
synced 2025-11-02 11:08:57 +00:00
Issue #21440: Backport changeset 4ebf97299b18 to branch 3.4, use
support.rmtree() and support.unlink() in test_zipfile & test_tarfile
This commit is contained in:
parent
19c899c1b1
commit
57004c696a
2 changed files with 30 additions and 32 deletions
|
|
@ -1,7 +1,6 @@
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import io
|
import io
|
||||||
import shutil
|
|
||||||
from hashlib import md5
|
from hashlib import md5
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
@ -480,16 +479,16 @@ class MiscReadTestBase(CommonReadTest):
|
||||||
# Test hardlink extraction (e.g. bug #857297).
|
# Test hardlink extraction (e.g. bug #857297).
|
||||||
with tarfile.open(tarname, errorlevel=1, encoding="iso8859-1") as tar:
|
with tarfile.open(tarname, errorlevel=1, encoding="iso8859-1") as tar:
|
||||||
tar.extract("ustar/regtype", TEMPDIR)
|
tar.extract("ustar/regtype", TEMPDIR)
|
||||||
self.addCleanup(os.remove, os.path.join(TEMPDIR, "ustar/regtype"))
|
self.addCleanup(support.unlink, os.path.join(TEMPDIR, "ustar/regtype"))
|
||||||
|
|
||||||
tar.extract("ustar/lnktype", TEMPDIR)
|
tar.extract("ustar/lnktype", TEMPDIR)
|
||||||
self.addCleanup(os.remove, os.path.join(TEMPDIR, "ustar/lnktype"))
|
self.addCleanup(support.unlink, os.path.join(TEMPDIR, "ustar/lnktype"))
|
||||||
with open(os.path.join(TEMPDIR, "ustar/lnktype"), "rb") as f:
|
with open(os.path.join(TEMPDIR, "ustar/lnktype"), "rb") as f:
|
||||||
data = f.read()
|
data = f.read()
|
||||||
self.assertEqual(md5sum(data), md5_regtype)
|
self.assertEqual(md5sum(data), md5_regtype)
|
||||||
|
|
||||||
tar.extract("ustar/symtype", TEMPDIR)
|
tar.extract("ustar/symtype", TEMPDIR)
|
||||||
self.addCleanup(os.remove, os.path.join(TEMPDIR, "ustar/symtype"))
|
self.addCleanup(support.unlink, os.path.join(TEMPDIR, "ustar/symtype"))
|
||||||
with open(os.path.join(TEMPDIR, "ustar/symtype"), "rb") as f:
|
with open(os.path.join(TEMPDIR, "ustar/symtype"), "rb") as f:
|
||||||
data = f.read()
|
data = f.read()
|
||||||
self.assertEqual(md5sum(data), md5_regtype)
|
self.assertEqual(md5sum(data), md5_regtype)
|
||||||
|
|
@ -522,7 +521,7 @@ class MiscReadTestBase(CommonReadTest):
|
||||||
self.assertEqual(tarinfo.mtime, file_mtime, errmsg)
|
self.assertEqual(tarinfo.mtime, file_mtime, errmsg)
|
||||||
finally:
|
finally:
|
||||||
tar.close()
|
tar.close()
|
||||||
shutil.rmtree(DIR)
|
support.rmtree(DIR)
|
||||||
|
|
||||||
def test_extract_directory(self):
|
def test_extract_directory(self):
|
||||||
dirtype = "ustar/dirtype"
|
dirtype = "ustar/dirtype"
|
||||||
|
|
@ -537,7 +536,7 @@ class MiscReadTestBase(CommonReadTest):
|
||||||
if sys.platform != "win32":
|
if sys.platform != "win32":
|
||||||
self.assertEqual(os.stat(extracted).st_mode & 0o777, 0o755)
|
self.assertEqual(os.stat(extracted).st_mode & 0o777, 0o755)
|
||||||
finally:
|
finally:
|
||||||
shutil.rmtree(DIR)
|
support.rmtree(DIR)
|
||||||
|
|
||||||
def test_init_close_fobj(self):
|
def test_init_close_fobj(self):
|
||||||
# Issue #7341: Close the internal file object in the TarFile
|
# Issue #7341: Close the internal file object in the TarFile
|
||||||
|
|
@ -901,7 +900,7 @@ class GNUReadTest(LongnameTest, ReadTest, unittest.TestCase):
|
||||||
fobj.seek(4096)
|
fobj.seek(4096)
|
||||||
fobj.truncate()
|
fobj.truncate()
|
||||||
s = os.stat(name)
|
s = os.stat(name)
|
||||||
os.remove(name)
|
support.unlink(name)
|
||||||
return s.st_blocks == 0
|
return s.st_blocks == 0
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
@ -1034,7 +1033,7 @@ class WriteTest(WriteTestBase, unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
tar.close()
|
tar.close()
|
||||||
finally:
|
finally:
|
||||||
os.rmdir(path)
|
support.rmdir(path)
|
||||||
|
|
||||||
@unittest.skipUnless(hasattr(os, "link"),
|
@unittest.skipUnless(hasattr(os, "link"),
|
||||||
"Missing hardlink implementation")
|
"Missing hardlink implementation")
|
||||||
|
|
@ -1054,8 +1053,8 @@ class WriteTest(WriteTestBase, unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
tar.close()
|
tar.close()
|
||||||
finally:
|
finally:
|
||||||
os.remove(target)
|
support.unlink(target)
|
||||||
os.remove(link)
|
support.unlink(link)
|
||||||
|
|
||||||
@support.skip_unless_symlink
|
@support.skip_unless_symlink
|
||||||
def test_symlink_size(self):
|
def test_symlink_size(self):
|
||||||
|
|
@ -1069,7 +1068,7 @@ class WriteTest(WriteTestBase, unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
tar.close()
|
tar.close()
|
||||||
finally:
|
finally:
|
||||||
os.remove(path)
|
support.unlink(path)
|
||||||
|
|
||||||
def test_add_self(self):
|
def test_add_self(self):
|
||||||
# Test for #1257255.
|
# Test for #1257255.
|
||||||
|
|
@ -1116,7 +1115,7 @@ class WriteTest(WriteTestBase, unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
tar.close()
|
tar.close()
|
||||||
finally:
|
finally:
|
||||||
shutil.rmtree(tempdir)
|
support.rmtree(tempdir)
|
||||||
|
|
||||||
def test_filter(self):
|
def test_filter(self):
|
||||||
tempdir = os.path.join(TEMPDIR, "filter")
|
tempdir = os.path.join(TEMPDIR, "filter")
|
||||||
|
|
@ -1152,7 +1151,7 @@ class WriteTest(WriteTestBase, unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
tar.close()
|
tar.close()
|
||||||
finally:
|
finally:
|
||||||
shutil.rmtree(tempdir)
|
support.rmtree(tempdir)
|
||||||
|
|
||||||
# Guarantee that stored pathnames are not modified. Don't
|
# Guarantee that stored pathnames are not modified. Don't
|
||||||
# remove ./ or ../ or double slashes. Still make absolute
|
# remove ./ or ../ or double slashes. Still make absolute
|
||||||
|
|
@ -1180,9 +1179,9 @@ class WriteTest(WriteTestBase, unittest.TestCase):
|
||||||
tar.close()
|
tar.close()
|
||||||
|
|
||||||
if not dir:
|
if not dir:
|
||||||
os.remove(foo)
|
support.unlink(foo)
|
||||||
else:
|
else:
|
||||||
os.rmdir(foo)
|
support.rmdir(foo)
|
||||||
|
|
||||||
self.assertEqual(t.name, cmp_path or path.replace(os.sep, "/"))
|
self.assertEqual(t.name, cmp_path or path.replace(os.sep, "/"))
|
||||||
|
|
||||||
|
|
@ -1213,8 +1212,8 @@ class WriteTest(WriteTestBase, unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
tar.close()
|
tar.close()
|
||||||
finally:
|
finally:
|
||||||
os.unlink(temparchive)
|
support.unlink(temparchive)
|
||||||
shutil.rmtree(tempdir)
|
support.rmtree(tempdir)
|
||||||
|
|
||||||
def test_pathnames(self):
|
def test_pathnames(self):
|
||||||
self._test_pathname("foo")
|
self._test_pathname("foo")
|
||||||
|
|
@ -1314,7 +1313,7 @@ class StreamWriteTest(WriteTestBase, unittest.TestCase):
|
||||||
# Test for issue #8464: Create files with correct
|
# Test for issue #8464: Create files with correct
|
||||||
# permissions.
|
# permissions.
|
||||||
if os.path.exists(tmpname):
|
if os.path.exists(tmpname):
|
||||||
os.remove(tmpname)
|
support.unlink(tmpname)
|
||||||
|
|
||||||
original_umask = os.umask(0o022)
|
original_umask = os.umask(0o022)
|
||||||
try:
|
try:
|
||||||
|
|
@ -1668,7 +1667,7 @@ class AppendTestBase:
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.tarname = tmpname
|
self.tarname = tmpname
|
||||||
if os.path.exists(self.tarname):
|
if os.path.exists(self.tarname):
|
||||||
os.remove(self.tarname)
|
support.unlink(self.tarname)
|
||||||
|
|
||||||
def _create_testtar(self, mode="w:"):
|
def _create_testtar(self, mode="w:"):
|
||||||
with tarfile.open(tarname, encoding="iso8859-1") as src:
|
with tarfile.open(tarname, encoding="iso8859-1") as src:
|
||||||
|
|
@ -2175,7 +2174,7 @@ def setUpModule():
|
||||||
|
|
||||||
def tearDownModule():
|
def tearDownModule():
|
||||||
if os.path.exists(TEMPDIR):
|
if os.path.exists(TEMPDIR):
|
||||||
shutil.rmtree(TEMPDIR)
|
support.rmtree(TEMPDIR)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ import os
|
||||||
import sys
|
import sys
|
||||||
import importlib.util
|
import importlib.util
|
||||||
import time
|
import time
|
||||||
import shutil
|
|
||||||
import struct
|
import struct
|
||||||
import zipfile
|
import zipfile
|
||||||
import unittest
|
import unittest
|
||||||
|
|
@ -12,7 +11,7 @@ import unittest
|
||||||
from tempfile import TemporaryFile
|
from tempfile import TemporaryFile
|
||||||
from random import randint, random, getrandbits
|
from random import randint, random, getrandbits
|
||||||
|
|
||||||
from test.support import (TESTFN, findfile, unlink,
|
from test.support import (TESTFN, findfile, unlink, rmtree,
|
||||||
requires_zlib, requires_bz2, requires_lzma,
|
requires_zlib, requires_bz2, requires_lzma,
|
||||||
captured_stdout, check_warnings)
|
captured_stdout, check_warnings)
|
||||||
|
|
||||||
|
|
@ -691,7 +690,7 @@ class PyZipFileTests(unittest.TestCase):
|
||||||
self.assertNotIn('mod2.txt', names)
|
self.assertNotIn('mod2.txt', names)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
shutil.rmtree(TESTFN2)
|
rmtree(TESTFN2)
|
||||||
|
|
||||||
def test_write_python_directory_filtered(self):
|
def test_write_python_directory_filtered(self):
|
||||||
os.mkdir(TESTFN2)
|
os.mkdir(TESTFN2)
|
||||||
|
|
@ -711,7 +710,7 @@ class PyZipFileTests(unittest.TestCase):
|
||||||
self.assertNotIn('mod2.py', names)
|
self.assertNotIn('mod2.py', names)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
shutil.rmtree(TESTFN2)
|
rmtree(TESTFN2)
|
||||||
|
|
||||||
def test_write_non_pyfile(self):
|
def test_write_non_pyfile(self):
|
||||||
with TemporaryFile() as t, zipfile.PyZipFile(t, "w") as zipfp:
|
with TemporaryFile() as t, zipfile.PyZipFile(t, "w") as zipfp:
|
||||||
|
|
@ -741,7 +740,7 @@ class PyZipFileTests(unittest.TestCase):
|
||||||
self.assertNotIn('mod1.pyo', names)
|
self.assertNotIn('mod1.pyo', names)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
shutil.rmtree(TESTFN2)
|
rmtree(TESTFN2)
|
||||||
|
|
||||||
|
|
||||||
class ExtractTests(unittest.TestCase):
|
class ExtractTests(unittest.TestCase):
|
||||||
|
|
@ -767,7 +766,7 @@ class ExtractTests(unittest.TestCase):
|
||||||
os.remove(writtenfile)
|
os.remove(writtenfile)
|
||||||
|
|
||||||
# remove the test file subdirectories
|
# remove the test file subdirectories
|
||||||
shutil.rmtree(os.path.join(os.getcwd(), 'ziptest2dir'))
|
rmtree(os.path.join(os.getcwd(), 'ziptest2dir'))
|
||||||
|
|
||||||
def test_extract_all(self):
|
def test_extract_all(self):
|
||||||
with zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED) as zipfp:
|
with zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED) as zipfp:
|
||||||
|
|
@ -785,7 +784,7 @@ class ExtractTests(unittest.TestCase):
|
||||||
os.remove(outfile)
|
os.remove(outfile)
|
||||||
|
|
||||||
# remove the test file subdirectories
|
# remove the test file subdirectories
|
||||||
shutil.rmtree(os.path.join(os.getcwd(), 'ziptest2dir'))
|
rmtree(os.path.join(os.getcwd(), 'ziptest2dir'))
|
||||||
|
|
||||||
def check_file(self, filename, content):
|
def check_file(self, filename, content):
|
||||||
self.assertTrue(os.path.isfile(filename))
|
self.assertTrue(os.path.isfile(filename))
|
||||||
|
|
@ -867,12 +866,12 @@ class ExtractTests(unittest.TestCase):
|
||||||
msg='extract %r: %r != %r' %
|
msg='extract %r: %r != %r' %
|
||||||
(arcname, writtenfile, correctfile))
|
(arcname, writtenfile, correctfile))
|
||||||
self.check_file(correctfile, content)
|
self.check_file(correctfile, content)
|
||||||
shutil.rmtree('target')
|
rmtree('target')
|
||||||
|
|
||||||
with zipfile.ZipFile(TESTFN2, 'r') as zipfp:
|
with zipfile.ZipFile(TESTFN2, 'r') as zipfp:
|
||||||
zipfp.extractall(targetpath)
|
zipfp.extractall(targetpath)
|
||||||
self.check_file(correctfile, content)
|
self.check_file(correctfile, content)
|
||||||
shutil.rmtree('target')
|
rmtree('target')
|
||||||
|
|
||||||
correctfile = os.path.join(os.getcwd(), *fixedname.split('/'))
|
correctfile = os.path.join(os.getcwd(), *fixedname.split('/'))
|
||||||
|
|
||||||
|
|
@ -881,12 +880,12 @@ class ExtractTests(unittest.TestCase):
|
||||||
self.assertEqual(writtenfile, correctfile,
|
self.assertEqual(writtenfile, correctfile,
|
||||||
msg="extract %r" % arcname)
|
msg="extract %r" % arcname)
|
||||||
self.check_file(correctfile, content)
|
self.check_file(correctfile, content)
|
||||||
shutil.rmtree(fixedname.split('/')[0])
|
rmtree(fixedname.split('/')[0])
|
||||||
|
|
||||||
with zipfile.ZipFile(TESTFN2, 'r') as zipfp:
|
with zipfile.ZipFile(TESTFN2, 'r') as zipfp:
|
||||||
zipfp.extractall()
|
zipfp.extractall()
|
||||||
self.check_file(correctfile, content)
|
self.check_file(correctfile, content)
|
||||||
shutil.rmtree(fixedname.split('/')[0])
|
rmtree(fixedname.split('/')[0])
|
||||||
|
|
||||||
os.remove(TESTFN2)
|
os.remove(TESTFN2)
|
||||||
|
|
||||||
|
|
@ -1643,7 +1642,7 @@ class TestWithDirectory(unittest.TestCase):
|
||||||
self.assertTrue(zipf.filelist[0].filename.endswith("x/"))
|
self.assertTrue(zipf.filelist[0].filename.endswith("x/"))
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
shutil.rmtree(TESTFN2)
|
rmtree(TESTFN2)
|
||||||
if os.path.exists(TESTFN):
|
if os.path.exists(TESTFN):
|
||||||
unlink(TESTFN)
|
unlink(TESTFN)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue