diff --git a/extra_tests/snippets/stdlib_pwd.py b/extra_tests/snippets/stdlib_pwd.py new file mode 100644 index 0000000000..6ef3a64d02 --- /dev/null +++ b/extra_tests/snippets/stdlib_pwd.py @@ -0,0 +1,12 @@ +import sys +# windows doesn't support pwd +if sys.platform.startswith("win"): + exit(0) + +from testutils import assert_raises +import pwd + +with assert_raises(KeyError): + fake_name = 'fake_user' + while pwd.getpwnam(fake_name): + fake_name += '1' 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