diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-02-07 05:19:29 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-02-07 05:19:29 +0000 |
commit | 5edbec17ec9f2dfb292ad81ee02fd20100e57c6b (patch) | |
tree | 9aa2ff815d55b74c88929efb5e9ad0448b402166 /test/lib | |
parent | d006aaae55d2c07148203dcb7e353db37f83c924 (diff) | |
download | ruby-5edbec17ec9f2dfb292ad81ee02fd20100e57c6b.tar.gz |
test/unit.rb: most-asserted
* test/lib/test/unit.rb (Statistics#record): record most asserted
tests.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57559 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/lib')
-rw-r--r-- | test/lib/test/unit.rb | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/test/lib/test/unit.rb b/test/lib/test/unit.rb index 9cad662250..03c56d825a 100644 --- a/test/lib/test/unit.rb +++ b/test/lib/test/unit.rb @@ -587,12 +587,22 @@ module Test end module Statistics + def update_list(list, rec, max) + if i = list.empty? ? 0 : list.bsearch_index {|*a| yield(*a)} + list[i, 0] = [rec] + list[max..-1] = [] if list.size >= max + end + end + def record(suite, method, assertions, time, error) - if max = @options[:longest] - longest = @longest ||= [] - if i = longest.empty? ? 0 : longest.bsearch_index {|_,_,_,t,_|t<time} - longest[i, 0] = [[suite.name, method, assertions, time, error]] - longest[max..-1] = [] if longest.size >= max + if @options.values_at(:longest, :most_asserted).any? + @tops ||= {} + rec = [suite.name, method, assertions, time, error] + if max = @options[:longest] + update_list(@tops[:longest] ||= [], rec, max) {|_,_,_,t,_|t<time} + end + if max = @options[:most_asserted] + update_list(@tops[:most_asserted] ||= [], rec, max) {|_,_,a,_,_|a<assertions} end end # (((@record ||= {})[suite] ||= {})[method]) = [assertions, time, error] @@ -601,10 +611,15 @@ module Test def run(*args) result = super - if defined?(@longest) and @longest - @longest.each {|suite, method, assertions, time, error| - printf "%5.2fsec(%d): %s#%s\n", time, assertions, suite, method - } + if @tops ||= nil + @tops.each do |t, list| + if list + puts "#{t.to_s.tr('_', ' ')} tests:" + list.each {|suite, method, assertions, time, error| + printf "%5.2fsec(%d): %s#%s\n", time, assertions, suite, method + } + end + end end result end @@ -616,6 +631,9 @@ module Test opts.on '--longest=N', Integer, 'Show longest N tests' do |n| options[:longest] = n end + opts.on '--most-asserted=N', Integer, 'Show most asserted N tests' do |n| + options[:most_asserted] = n + end end end |