Julien Palard <julien+pyt...@palard.fr> added the comment: Strange fact, this was already fixed in 011525ee92eb1c13ad1a62d28725a840e28f8160 (which closes issue10761, nice spot Andrew) but was lost during a merge in 0d28a61d23:
$ git show 0d28a61d23 commit 0d28a61d233c02c458c8b4a25613be2f4979331e Merge: ed3a303548 d7c9d9cdcd $ git show 0d28a61d23:Lib/tarfile.py | grep unlink # The merge commit does no longer contains the fix $ git show ed3a303548:Lib/tarfile.py | grep unlink # The "left" parent does not contains it neither $ git show d7c9d9cdcd:Lib/tarfile.py | grep unlink # The "right" one does contains it. os.unlink(targetpath) os.unlink(targetpath) Stranger fact, the test was not lost during the merge, and still lives today (test_extractall_symlinks). Happen that the current test is passing because it's in part erroneous, instead of trying to create a symlink on an existing one, it creates a symlink far far away: (Pdb) p targetpath '/home/mdk/clones/python/cpython/@test_648875_tmp-tardir/testsymlinks/home/mdk/clones/python/cpython/@test_648875_tmp-tardir/testsymlinks/symlink' Aditionally it passes anway because tar.errorlevel equals 1, which means the error is logged but not raised. With the following small patch: --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -1339,10 +1339,10 @@ class WriteTest(WriteTestBase, unittest.TestCase): f.write('something\n') os.symlink(source_file, target_file) with tarfile.open(temparchive, 'w') as tar: - tar.add(source_file) - tar.add(target_file) + tar.add(source_file, arcname="source") + tar.add(target_file, arcname="symlink") # Let's extract it to the location which contains the symlink - with tarfile.open(temparchive) as tar: + with tarfile.open(temparchive, errorlevel=2) as tar: # this should not raise OSError: [Errno 17] File exists try: tar.extractall(path=tempdir) the error is raised as expected: FileExistsError: [Errno 17] File exists: '/home/mdk/clones/python/cpython/@test_649794_tmpæ-tardir/testsymlinks/source' -> '/home/mdk/clones/python/cpython/@test_649794_tmpæ-tardir/testsymlinks/symlink' I'm opening an PR to restore this as it was intended. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue12800> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com