From f9deb310388e536a5e118bf5529ff9ff14fe00a5 Mon Sep 17 00:00:00 2001 From: Seonkyo Ok Date: Fri, 24 Feb 2023 18:02:04 +0900 Subject: [PATCH 1/2] gh-95675 fix uid and gid at test_add_dir_getmember --- Lib/test/test_tarfile.py | 11 +++++------ Misc/ACKS | 1 + 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index f15a800976681c..137fe617deae2a 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -225,18 +225,17 @@ def test_add_dir_getmember(self): self.add_dir_and_getmember('bar') self.add_dir_and_getmember('a'*101) - @unittest.skipIf( - (hasattr(os, 'getuid') and os.getuid() > 0o777_7777) or - (hasattr(os, 'getgid') and os.getgid() > 0o777_7777), - "uid or gid too high for USTAR format." - ) def add_dir_and_getmember(self, name): + def filter(tarinfo): + tarinfo.uid = tarinfo.gid = 100 + return tarinfo + with os_helper.temp_cwd(): with tarfile.open(tmpname, 'w') as tar: tar.format = tarfile.USTAR_FORMAT try: os.mkdir(name) - tar.add(name) + tar.add(name, filter=filter) finally: os.rmdir(name) with tarfile.open(tmpname) as tar: diff --git a/Misc/ACKS b/Misc/ACKS index 33dbf4e989d96a..72f81ccfadba7b 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1307,6 +1307,7 @@ Jon Oberheide Milan Oberkirch Pascal Oberndoerfer Géry Ogam +Seonkyo Ok Jeffrey Ollie Adam Olsen Bryan Olson From 0704ec80f5a057a3aebd63c3e77610f0d66f5aab Mon Sep 17 00:00:00 2001 From: Seonkyo Ok Date: Sat, 25 Feb 2023 01:07:30 +0900 Subject: [PATCH 2/2] gh-95675 Skip if getuid or getgid is not in os --- Lib/test/test_tarfile.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index 137fe617deae2a..75b60e9a50e78a 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -225,6 +225,8 @@ def test_add_dir_getmember(self): self.add_dir_and_getmember('bar') self.add_dir_and_getmember('a'*101) + @unittest.skipUnless(hasattr(os, "getuid") and hasattr(os, "getgid"), + "Missing getuid or getgid implementation") def add_dir_and_getmember(self, name): def filter(tarinfo): tarinfo.uid = tarinfo.gid = 100