https://github.com/python/cpython/commit/c92ef3a6def2c9ef385c596a1eee00d9b07c2ec3
commit: c92ef3a6def2c9ef385c596a1eee00d9b07c2ec3
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2026-05-15T20:49:37Z
summary:
gh-149879: Fix test_tarfile on Cygwin (#149897)
On Cygwin, there is no root user (uid 0).
Fix test_realpath_limit_attack(): the test fails with ELOOP on
Cygwin.
files:
M Lib/test/test_tarfile.py
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index 192c948edc6056..8e213a8f999218 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -3205,7 +3205,11 @@ def root_is_uid_gid_0():
import pwd, grp
except ImportError:
return False
- if pwd.getpwuid(0)[0] != 'root':
+ try:
+ if pwd.getpwuid(0)[0] != 'root':
+ return False
+ except KeyError:
+ # On Cygwin, there is no root user (uid 0)
return False
if grp.getgrgid(0)[0] != 'root':
return False
@@ -3985,6 +3989,9 @@ def test_realpath_limit_attack(self):
check_flag=False)):
if sys.platform == 'win32':
self.expect_exception((FileNotFoundError, FileExistsError))
+ elif sys.platform == 'cygwin':
+ exc = self.expect_exception(OSError)
+ self.assertEqual(exc.errno, errno.ELOOP)
elif self.raised_exception:
# Cannot symlink/hardlink: tarfile falls back to getmember()
self.expect_exception(KeyError)
@@ -4006,7 +4013,8 @@ def test_realpath_limit_attack(self):
# 206: ERROR_FILENAME_EXCED_RANGE
self.assertIn(exc.winerror, (3, 5, 206))
else:
- self.assertEqual(exc.errno, errno.ENAMETOOLONG)
+ self.assertIn(exc.errno,
+ (errno.ENAMETOOLONG, errno.ELOOP))
@symlink_test
def test_parent_symlink2(self):
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]