diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 5fc6183ffcf93c..ecc59afab6f63b 100755 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -2208,7 +2208,8 @@ def add(self, name, arcname=None, recursive=True, *, filter=None): self.addfile(tarinfo, f) elif tarinfo.isdir(): - self.addfile(tarinfo) + if tarinfo.name != os.curdir: + self.addfile(tarinfo) if recursive: for f in sorted(os.listdir(name)): self.add(os.path.join(name, f), os.path.join(arcname, f), diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index 60e88d57b2b23d..feb75bf79daa94 100644 --- a/Lib/test/test_shutil.py +++ b/Lib/test/test_shutil.py @@ -1637,7 +1637,7 @@ def test_make_tarball(self): self.assertTrue(tarfile.is_tarfile(tarball)) with tarfile.open(tarball, 'r:gz') as tf: self.assertCountEqual(tf.getnames(), - ['.', './sub', './sub2', + ['./sub', './sub2', './file1', './file2', './sub/file3']) # trying an uncompressed one @@ -1648,7 +1648,7 @@ def test_make_tarball(self): self.assertTrue(tarfile.is_tarfile(tarball)) with tarfile.open(tarball, 'r') as tf: self.assertCountEqual(tf.getnames(), - ['.', './sub', './sub2', + ['./sub', './sub2', './file1', './file2', './sub/file3']) def _tarinfo(self, path): diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index c9c1097963a885..2551f8d232ddbb 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -1587,8 +1587,9 @@ def test_cwd(self): tar = tarfile.open(tmpname, "r") try: for t in tar: - if t.name != ".": - self.assertTrue(t.name.startswith("./"), t.name) + # gh-80145: "." is now excluded from tarfiles + self.assertNotEqual(t.name, os.curdir) + self.assertTrue(t.name.startswith("./"), t.name) finally: tar.close() diff --git a/Misc/NEWS.d/next/Library/2019-06-02-02-42-43.bpo-35964.wG23fC.rst b/Misc/NEWS.d/next/Library/2019-06-02-02-42-43.bpo-35964.wG23fC.rst new file mode 100644 index 00000000000000..0edbf6106c4f3a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-06-02-02-42-43.bpo-35964.wG23fC.rst @@ -0,0 +1,2 @@ +The tarfile module now excludes '.' directory entries when adding +a directory to a tar archive. Patch by Jeffrey Kintscher.