From c7a8a69e69c6dac893423dd4424ce4f5143b310c Mon Sep 17 00:00:00 2001 From: Hanif Ariffin Date: Sun, 2 Mar 2025 22:38:53 +0800 Subject: [PATCH 1/3] Fix not throwing the same error as CPython when trying to expanduser of a non-existent user Signed-off-by: Hanif Ariffin --- vm/src/stdlib/pwd.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vm/src/stdlib/pwd.rs b/vm/src/stdlib/pwd.rs index f6c277242c..f638fd2066 100644 --- a/vm/src/stdlib/pwd.rs +++ b/vm/src/stdlib/pwd.rs @@ -57,7 +57,7 @@ mod pwd { if pw_name.contains('\0') { return Err(exceptions::cstring_error(vm)); } - let user = User::from_name(name.as_str()).map_err(|err| err.into_pyexception(vm))?; + let user = User::from_name(name.as_str()).ok().flatten(); let user = user.ok_or_else(|| { vm.new_key_error( vm.ctx From 23aa15ffd6113c038ec94a5a24271574d73296d6 Mon Sep 17 00:00:00 2001 From: Jeong YunWon Date: Mon, 31 Mar 2025 11:34:17 +0900 Subject: [PATCH 2/3] add pwd test --- extra_tests/snippets/stdlib_pwd.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 extra_tests/snippets/stdlib_pwd.py diff --git a/extra_tests/snippets/stdlib_pwd.py b/extra_tests/snippets/stdlib_pwd.py new file mode 100644 index 0000000000..67e0d42169 --- /dev/null +++ b/extra_tests/snippets/stdlib_pwd.py @@ -0,0 +1,7 @@ +from testutils import assert_raises +import pwd + +with assert_raises(KeyError): + fake_name = 'fake_user' + while pwd.getpwnam(fake_name): + fake_name += '1' From 40989893f5b2d9eb9cb45e16d50ab51812a52e51 Mon Sep 17 00:00:00 2001 From: "Jeong, YunWon" <69878+youknowone@users.noreply.github.com> Date: Mon, 31 Mar 2025 15:28:32 +0900 Subject: [PATCH 3/3] Skip pwd test on windows --- extra_tests/snippets/stdlib_pwd.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/extra_tests/snippets/stdlib_pwd.py b/extra_tests/snippets/stdlib_pwd.py index 67e0d42169..6ef3a64d02 100644 --- a/extra_tests/snippets/stdlib_pwd.py +++ b/extra_tests/snippets/stdlib_pwd.py @@ -1,3 +1,8 @@ +import sys +# windows doesn't support pwd +if sys.platform.startswith("win"): + exit(0) + from testutils import assert_raises import pwd