* test/ruby/envutil.rb (assert_regexp_list): New assertion method.

* test/ruby/test_rubyoptions.rb: Use assert_regexp_list.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47925 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2014-10-15 03:27:37 +00:00
parent 7643c2b37d
commit 2386407223
3 changed files with 40 additions and 10 deletions

View File

@ -1,3 +1,9 @@
Wed Oct 15 12:26:58 2014 Tanaka Akira <akr@fsij.org>
* test/ruby/envutil.rb (assert_regexp_list): New assertion method.
* test/ruby/test_rubyoptions.rb: Use assert_regexp_list.
Wed Oct 15 07:21:09 2014 Tanaka Akira <akr@fsij.org>
* enum.c: min(n) drops elements bigger than the n-th maximum element.

View File

@ -477,6 +477,36 @@ eom
AssertFile
end
# pattern_list is an array which contains regexp and :*.
# :* means any sequence.
#
# pattern_list is anchored.
# Use [:*, regexp, :*] for non-anchored match.
def assert_regexp_list(pattern_list, actual, message=nil)
rest = actual
anchored = true
pattern_list.each {|pattern|
if pattern == :*
anchored = false
else
if anchored
match = /\A#{pattern}/.match(rest)
else
match = pattern.match(rest)
end
unless match
msg = message(msg) { "Expected #{mu_pp pattern}\nto match #{mu_pp rest}" }
assert false, msg
end
rest = match.post_match
anchored = true
end
}
if anchored
assert_equal("", rest)
end
end
class << (AssertFile = Struct.new(:failure_message).new)
include Assertions
def assert_file_predicate(predicate, *args)

View File

@ -536,7 +536,9 @@ class TestRubyOptions < Test::Unit::TestCase
--\sC\slevel\sbacktrace\sinformation\s-------------------------------------------\n
(?:(?:.*\s)?\[0x\h+\]\n)*\n
)?
(?m:.*)
)x,
:*,
%r(
\[NOTE\]\n
You\smay\shave\sencountered\sa\sbug\sin\sthe\sRuby\sinterpreter\sor\sextension\slibraries.\n
Bug\sreports\sare\swelcome.\n
@ -559,15 +561,7 @@ class TestRubyOptions < Test::Unit::TestCase
EnvUtil.diagnostic_reports(Signal.signame(signo), EnvUtil.rubybin, status.pid, Time.now)
end
str = stderr
SEGVTest::ExpectedStderrList.each {|regexp|
r = /\A#{regexp}/
unless r =~ str
assert_match(r, str, message)
end
str = $'
}
assert_equal('', str)
assert_regexp_list(SEGVTest::ExpectedStderrList, stderr, message)
status
end