class Attestify::Reporter
Reports results to the console.
Attributes
timer[RW]
Public Class Methods
new()
click to toggle source
# File lib/attestify/reporter.rb, line 8 def initialize @failures = [] @total_tests = 0 @total_assertions = 0 @total_failed_assertions = 0 @total_failures = 0 @total_errors = 0 @total_skips = 0 end
Public Instance Methods
passed?()
click to toggle source
# File lib/attestify/reporter.rb, line 18 def passed? (@total_failures + @total_errors).zero? end
record(result)
click to toggle source
# File lib/attestify/reporter.rb, line 22 def record(result) add_to_totals(result) @failures << result if !result.skipped? && !result.passed? print_result_code(result) end
report()
click to toggle source
# File lib/attestify/reporter.rb, line 28 def report puts_failures puts_footer end
Private Instance Methods
add_to_totals(result)
click to toggle source
# File lib/attestify/reporter.rb, line 35 def add_to_totals(result) @total_tests += 1 @total_assertions += result.assertions.total @total_failed_assertions += result.assertions.failed if result.skipped? @total_skips += 1 elsif result.errored? @total_errors += 1 elsif result.failed? @total_failures += 1 end end
assertions_per_second()
click to toggle source
# File lib/attestify/reporter.rb, line 117 def assertions_per_second if timer format("%.1f assertions/second", @total_assertions.to_f / timer.duration) else "? assertions/second" end end
comment(message)
click to toggle source
# File lib/attestify/reporter.rb, line 171 def comment(message) "# #{message}" end
elapsed_time()
click to toggle source
# File lib/attestify/reporter.rb, line 105 def elapsed_time timer || "?" end
failure_assertion_totals(failure)
click to toggle source
# File lib/attestify/reporter.rb, line 81 def failure_assertion_totals(failure) "#{failure.failed_assertions_total} out of #{failure.assertions_total} assertions failed" end
print_result_code(result)
click to toggle source
# File lib/attestify/reporter.rb, line 49 def print_result_code(result) print result.result_code end
puts_failure(failure, number)
click to toggle source
# File lib/attestify/reporter.rb, line 71 def puts_failure(failure, number) puts puts_failure_header(failure, number) puts_failure_details(failure, number) end
puts_failure_detail(failure_detail, number, sub_number)
click to toggle source
# File lib/attestify/reporter.rb, line 91 def puts_failure_detail(failure_detail, number, sub_number) puts puts " #{number}.#{sub_number}) #{failure_detail.message}" puts " #{failure_detail.backtrace_locations.join("\n ")}" end
puts_failure_details(failure, number)
click to toggle source
# File lib/attestify/reporter.rb, line 85 def puts_failure_details(failure, number) failure.assertions.failure_details.each_with_index do |failure_detail, i| puts_failure_detail(failure_detail, number, i + 1) end end
puts_failure_header(failure, number)
click to toggle source
# File lib/attestify/reporter.rb, line 77 def puts_failure_header(failure, number) puts "#{number}) #{failure.name}: #{failure_assertion_totals(failure)}" end
puts_failure_rerun(failure)
click to toggle source
# File lib/attestify/reporter.rb, line 159 def puts_failure_rerun(failure) puts "#{rerun_test_command(failure)} #{comment(failure.name)}" end
puts_failure_reruns()
click to toggle source
# File lib/attestify/reporter.rb, line 149 def puts_failure_reruns puts puts "Failed tests:" puts @failures.each do |failure| puts_failure_rerun(failure) end end
puts_failures()
click to toggle source
# File lib/attestify/reporter.rb, line 63 def puts_failures puts @failures.each_with_index do |failure, i| puts_failure(failure, i + 1) end end
record_failure(result)
click to toggle source
# File lib/attestify/reporter.rb, line 53 def record_failure(result) @failures << result if result.assertions.errored? @total_errors += 1 else @total_failures += 1 end end
rerun_test_command(failure)
click to toggle source
# File lib/attestify/reporter.rb, line 163 def rerun_test_command(failure) # TODO: Should I create a new method to get the test method...? test_method = failure.instance_variable_get(:@_test_method) source = failure.method(test_method).source_location source[0] = Pathname.new(File.realpath(source[0])).relative_path_from(Pathname.new(File.realpath("."))) "attestify #{source.join(":")}" end
tests_per_second()
click to toggle source
# File lib/attestify/reporter.rb, line 109 def tests_per_second if timer format("%.1f tests/second", @total_tests.to_f / timer.duration) else "? tests/second" end end
total_assertions()
click to toggle source
# File lib/attestify/reporter.rb, line 141 def total_assertions "#{@total_assertions} assertions" end
total_errors()
click to toggle source
# File lib/attestify/reporter.rb, line 133 def total_errors "#{@total_errors} errors" end
total_failed_assertions()
click to toggle source
# File lib/attestify/reporter.rb, line 145 def total_failed_assertions "#{@total_failed_assertions} failed assertions" end
total_failures()
click to toggle source
# File lib/attestify/reporter.rb, line 129 def total_failures "#{@total_failures} failures" end
total_skips()
click to toggle source
# File lib/attestify/reporter.rb, line 137 def total_skips "#{@total_skips} skips" end
total_tests()
click to toggle source
# File lib/attestify/reporter.rb, line 125 def total_tests "#{@total_tests} tests" end