aboutsummaryrefslogtreecommitdiffstats
path: root/test/ruby/envutil.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/envutil.rb')
-rw-r--r--test/ruby/envutil.rb24
1 files changed, 14 insertions, 10 deletions
diff --git a/test/ruby/envutil.rb b/test/ruby/envutil.rb
index 42a9bf0aa6..9759da0f73 100644
--- a/test/ruby/envutil.rb
+++ b/test/ruby/envutil.rb
@@ -187,18 +187,22 @@ module Test
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 != []
- yield(stdout.lines.map {|l| l.chomp }, stderr.lines.map {|l| l.chomp })
+ yield(stdout.lines.map {|l| l.chomp }, stderr.lines.map {|l| l.chomp }, status)
else
- if test_stdout.is_a?(Regexp)
- assert_match(test_stdout, stdout, message)
- else
- assert_equal(test_stdout, stdout.lines.map {|l| l.chomp }, message)
- end
- if test_stderr.is_a?(Regexp)
- assert_match(test_stderr, stderr, message)
- else
- assert_equal(test_stderr, stderr.lines.map {|l| l.chomp }, message)
+ errs = []
+ [[test_stdout, stdout], [test_stderr, stderr]].each do |exp, act|
+ begin
+ if exp.is_a?(Regexp)
+ assert_match(exp, act, message)
+ else
+ assert_equal(exp, act.lines.map {|l| l.chomp }, message)
+ end
+ rescue MiniTest::Assertion => e
+ errs << e.message
+ message = nil
+ end
end
+ raise MiniTest::Assertion, errs.join("\n---\n") unless errs.empty?
status
end
end