merge from 3.1
This commit is contained in:
commit
8a410d319a
|
@ -982,6 +982,34 @@ class WriteTest(WriteTestBase):
|
|||
|
||||
self.assertEqual(t.name, cmp_path or path.replace(os.sep, "/"))
|
||||
|
||||
def test_extractall_symlinks(self):
|
||||
# Test if extractall works properly when tarfile contains symlinks
|
||||
tempdir = os.path.join(TEMPDIR, "testsymlinks")
|
||||
temparchive = os.path.join(TEMPDIR, "testsymlinks.tar")
|
||||
os.mkdir(tempdir)
|
||||
try:
|
||||
source_file = os.path.join(tempdir,'source')
|
||||
target_file = os.path.join(tempdir,'symlink')
|
||||
with open(source_file,'w') as f:
|
||||
f.write('something\n')
|
||||
os.symlink(source_file, target_file)
|
||||
tar = tarfile.open(temparchive,'w')
|
||||
tar.add(source_file)
|
||||
tar.add(target_file)
|
||||
tar.close()
|
||||
# Let's extract it to the location which contains the symlink
|
||||
tar = tarfile.open(temparchive,'r')
|
||||
# this should not raise OSError: [Errno 17] File exists
|
||||
try:
|
||||
tar.extractall(path=tempdir)
|
||||
except OSError:
|
||||
self.fail("extractall failed with symlinked files")
|
||||
finally:
|
||||
tar.close()
|
||||
finally:
|
||||
os.unlink(temparchive)
|
||||
shutil.rmtree(tempdir)
|
||||
|
||||
def test_pathnames(self):
|
||||
self._test_pathname("foo")
|
||||
self._test_pathname(os.path.join("foo", ".", "bar"))
|
||||
|
|
Loading…
Reference in New Issue