From 010bf92779d2938c21c33ec9d4d0cdb87dc80760 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Mon, 1 Jul 2024 18:13:41 +0200 Subject: [PATCH] [3.13] gh-121200: Fix test_expanduser_pwd2() of test_posixpath (GH-121228) (#121232) gh-121200: Fix test_expanduser_pwd2() of test_posixpath (GH-121228) Call getpwnam() to get pw_dir, since it can be different than getpwall() pw_dir. (cherry picked from commit 02cb5fdee391670d63b2fc0a92ca9b36a32ac95a) Co-authored-by: Victor Stinner --- Lib/test/test_posixpath.py | 11 ++++++++--- .../2024-07-01-16-15-06.gh-issue-121200.4Pc-gc.rst | 3 +++ 2 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Tests/2024-07-01-16-15-06.gh-issue-121200.4Pc-gc.rst diff --git a/Lib/test/test_posixpath.py b/Lib/test/test_posixpath.py index 9f36a4cd9ce..fb714fd90ae 100644 --- a/Lib/test/test_posixpath.py +++ b/Lib/test/test_posixpath.py @@ -359,11 +359,16 @@ class PosixPathTest(unittest.TestCase): "no home directory on VxWorks") def test_expanduser_pwd2(self): pwd = import_helper.import_module('pwd') - for entry in pwd.getpwall(): - name = entry.pw_name + for all_entry in pwd.getpwall(): + name = all_entry.pw_name + + # gh-121200: pw_dir can be different between getpwall() and + # getpwnam(), so use getpwnam() pw_dir as expanduser() does. + entry = pwd.getpwnam(name) home = entry.pw_dir home = home.rstrip('/') or '/' - with self.subTest(pwd=entry): + + with self.subTest(all_entry=all_entry, entry=entry): self.assertEqual(posixpath.expanduser('~' + name), home) self.assertEqual(posixpath.expanduser(os.fsencode('~' + name)), os.fsencode(home)) diff --git a/Misc/NEWS.d/next/Tests/2024-07-01-16-15-06.gh-issue-121200.4Pc-gc.rst b/Misc/NEWS.d/next/Tests/2024-07-01-16-15-06.gh-issue-121200.4Pc-gc.rst new file mode 100644 index 00000000000..01e0d9b9f21 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2024-07-01-16-15-06.gh-issue-121200.4Pc-gc.rst @@ -0,0 +1,3 @@ +Fix ``test_expanduser_pwd2()`` of ``test_posixpath``. Call ``getpwnam()`` +to get ``pw_dir``, since it can be different than ``getpwall()`` ``pw_dir``. +Patch by Victor Stinner.