summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorYusuke Endoh <mame@ruby-lang.org>2020-05-30 00:13:56 +0900
committerYusuke Endoh <mame@ruby-lang.org>2020-05-30 00:16:44 +0900
commit58bc97628c14933b73f13e0856d1a56e70e8b0e4 (patch)
treef2e59d38086c25af9755669d988a7153e8c8644f /test/ruby
parent3ed79a97b071bf7cb2f6c11cda149007e159163f (diff)
test/ruby/test_process.rb: GID.from_name may raise Errno:ESRCH
getgrnam(3) says: ``` ERRORS 0 or ENOENT or ESRCH or EBADF or EPERM or ... The given name or gid was not found. ``` Process::GID.from_name raises an ArgumentError for 0, but Errno::ESRCH for ESRCH. Actually, WSL 2 raises Errno::ESRCH. This change accepts all exceptions above.
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_process.rb12
1 files changed, 9 insertions, 3 deletions
diff --git a/test/ruby/test_process.rb b/test/ruby/test_process.rb
index 9d0ee6708a..f88324fbbc 100644
--- a/test/ruby/test_process.rb
+++ b/test/ruby/test_process.rb
@@ -1621,9 +1621,15 @@ class TestProcess < Test::Unit::TestCase
if g = Etc.getgrgid(Process.gid)
assert_equal(Process.gid, Process::GID.from_name(g.name), g.name)
end
- assert_raise_with_message(ArgumentError, /\u{4e0d 5b58 5728}/) {
- Process::GID.from_name("\u{4e0d 5b58 5728}")
- }
+ expected_excs = [ArgumentError]
+ expected_excs << Errno::ENOENT if defined?(Errno::ENOENT)
+ expected_excs << Errno::ESRCH if defined?(Errno::ESRCH) # WSL 2 actually raises Errno::ESRCH
+ expected_excs << Errno::EBADF if defined?(Errno::EBADF)
+ expected_excs << Errno::EPERM if defined?(Errno::EPERM)
+ exc = assert_raise(*expected_excs) do
+ Process::GID.from_name("\u{4e0d 5b58 5728}") # fu son zai ("absent" in Kanji)
+ end
+ assert_match(/\u{4e0d 5b58 5728}/, exc.message) if exc.is_a?(ArgumentError)
end
end