lib/minitest/utils/reporter.rb in minitest-utils-0.1.1 vs lib/minitest/utils/reporter.rb in minitest-utils-0.1.2
- old
+ new
@@ -77,28 +77,35 @@
str << "\n" << indent(color(location, :yellow))
io.print str
end
def display_replay_command(result)
- location = filter_backtrace(result.failure.backtrace).first.gsub(/:\d+.*?$/, '')
+ location = find_test_file(result)
command = %[rake TEST=#{location} TESTOPTS="--name=#{result.name}"]
str = "\n"
str << color(command, :red)
io.print str
end
+ def find_test_file(result)
+ filter_backtrace(result.failure.backtrace)
+ .find {|line| line.match(%r(^(test|spec)/.*?_(test|spec).rb)) }
+ .gsub(/:\d+.*?$/, '')
+ end
+
def backtrace(backtrace)
backtrace = filter_backtrace(backtrace).map {|line| location(line) }
return if backtrace.empty?
indent(backtrace.join("\n")).gsub(/^(\s+)/, "\\1# ")
end
def location(location)
+ location = File.expand_path(location[/^([^:]+)/, 1])
+
return location unless location.start_with?(Dir.pwd)
- location = location.gsub(%r[^#{Regexp.escape(Dir.pwd)}/], '')
- "./#{location}"
+ location.gsub(%r[^#{Regexp.escape(Dir.pwd)}/], '')
end
def filter_backtrace(backtrace)
Minitest.backtrace_filter.filter(backtrace)
end