Mini Shell
module TestTimes
def self.run(test_results, limit=0)
limit = limit.nonzero? || 10
tests = []
test_results.split(/\n/).each do |line|
if line =~ /^(.+?#[^:]+): ([0-9.]+) s: \.$/
tests << [$1, $2.to_f, line]
end
end
puts "#{limit} Slowest tests"
puts tests.sort_by { |item|
item[1]
}.reverse[0...limit].map { |item|
"%6.3f: %-s\n" % [item[1], item[0]]
}
end
end
namespace :test do
desc "Find the slowest unit tests"
task :times, [:limit] do |t, args|
TestTimes.run `rake test:units TESTOPTS='--verbose'`, args.limit.to_i
end
end
Zerion Mini Shell 1.0