Suppress stderr output in TestRubyOptions#assert_segv

It is checked against the given `list`, do not print the same output
twice.
This commit is contained in:
Nobuyoshi Nakada 2025-06-16 19:18:11 +09:00
parent 85e61eac85
commit f0371efbd8
No known key found for this signature in database
GPG Key ID: 3582D74E1FEE4465
Notes: git 2025-06-16 11:45:03 +00:00
2 changed files with 9 additions and 2 deletions

View File

@ -787,6 +787,12 @@ class TestRubyOptions < Test::Unit::TestCase
unless /mswin|mingw/ =~ RUBY_PLATFORM
opts[:rlimit_core] = 0
end
opts[:failed] = proc do |status, message = "", out = ""|
if (sig = status.termsig) && Signal.list["SEGV"] == sig
out = ""
end
Test::Unit::CoreAssertions::FailDesc[status, message]
end
ExecOptions = opts.freeze
# The regexp list that should match the entire stderr output.

View File

@ -97,11 +97,12 @@ module Test
end
def assert_in_out_err(args, test_stdin = "", test_stdout = [], test_stderr = [], message = nil,
success: nil, **opt)
success: nil, failed: nil, **opt)
args = Array(args).dup
args.insert((Hash === args[0] ? 1 : 0), '--disable=gems')
stdout, stderr, status = EnvUtil.invoke_ruby(args, test_stdin, true, true, **opt)
desc = FailDesc[status, message, stderr]
desc = failed[status, message, stderr] if failed
desc ||= FailDesc[status, message, stderr]
if block_given?
raise "test_stdout ignored, use block only or without block" if test_stdout != []
raise "test_stderr ignored, use block only or without block" if test_stderr != []