class Assert::DefaultView
This is the default view used by assert. It renders ansi test output designed for terminal viewing.
Public Instance Methods
after_load()
click to toggle source
# File lib/assert/default_view.rb, line 24 def after_load puts "Loaded suite (#{tests_to_run_count_statement})" end
before_load(test_files)
click to toggle source
# File lib/assert/default_view.rb, line 21 def before_load(test_files) end
on_finish()
click to toggle source
# File lib/assert/default_view.rb, line 33 def on_finish dump_test_results if test_count > 0 # show profile output if show_test_profile_info? # sort the test datas fastest to slowest @test_datas .values .sort{ |a, b| a.run_time <=> b.run_time } .each do |test_data| puts "#{formatted_run_time(test_data.run_time)} seconds,"\ " #{test_data.result_count} results,"\ " #{formatted_result_rate(test_data.result_rate)} results/s "\ "-- #{test_data.context}: #{test_data.name.inspect}" end puts end # style the summaries of each result set styled_results_sentence = results_summary_sentence do |summary, result_type| ansi_styled_msg(summary, result_type) end puts "#{result_count_statement}: #{styled_results_sentence}" puts puts "(#{formatted_suite_run_time} seconds, " \ "#{formatted_suite_test_rate} tests/s, " \ "#{formatted_suite_result_rate} results/s)" end
on_info(test)
click to toggle source
# File lib/assert/default_view.rb, line 64 def on_info(test) dump_test_results puts "Current test:" puts test.name puts test.file_line.to_s puts end
on_interrupt(_err)
click to toggle source
# File lib/assert/default_view.rb, line 73 def on_interrupt(_err) dump_test_results end
on_start()
click to toggle source
# File lib/assert/default_view.rb, line 28 def on_start reset_run_data set_callbacks end
Private Instance Methods
accumulate_test_data?()
click to toggle source
# File lib/assert/default_view.rb, line 139 def accumulate_test_data? show_test_verbose_info? || show_test_profile_info? end
dump_test_results()
click to toggle source
# File lib/assert/default_view.rb, line 156 def dump_test_results print "\n" puts @results_to_dump.sort.each do |result_data| # output the styled result details puts ansi_styled_msg(result_data.details, result_data.type) # output any captured stdout if result_data.output && !result_data.output.empty? puts captured_output(result_data.output) end # output re-run CLI cmd puts re_run_test_cmd(result_data.test_id) # add an empty line between each dumped result puts end end
dumpable_result?(result)
click to toggle source
# File lib/assert/default_view.rb, line 151 def dumpable_result?(result) [:fail, :error].include?(result.type) || !!([:skip, :ignore].include?(result.type) && result.message) end
find_test_data(test_file_line)
click to toggle source
# File lib/assert/default_view.rb, line 147 def find_test_data(test_file_line) @test_datas[test_file_line.to_s] end
get_test_data(test)
click to toggle source
# File lib/assert/default_view.rb, line 143 def get_test_data(test) @test_datas[test.file_line.to_s] ||= TestData.for_test(test) end
reset_run_data()
click to toggle source
# File lib/assert/default_view.rb, line 79 def reset_run_data @results_to_dump = [] @test_datas = {} end
set_callbacks()
click to toggle source
# File lib/assert/default_view.rb, line 84 def set_callbacks @metaclass = class << self; self; end if accumulate_test_data? @metaclass.class_eval <<-RUBY def before_test(test) test_data = get_test_data(test) puts "\#{test_data.name.inspect} (\#{test_data.context})" puts " \#{test_data.file_line}" print " " end def on_result(result) print( ansi_styled_msg( self.send("\#{result.to_sym}_abbrev"), result.type, ) ) @results_to_dump << ResultData.for_result(result) if dumpable_result?(result) find_test_data(result.test_file_line).result_count += 1 end def after_test(test) test_data = find_test_data(test.file_line) test_data.run_time = test.run_time test_data.result_rate = get_rate(test_data.result_count, test_data.run_time) if show_test_verbose_info? print " \#{formatted_run_time(test_data.run_time)} seconds,"\ " \#{test_data.result_count} results,"\ " \#{formatted_result_rate(test_data.result_rate)} "\ "results/s\n" else print "\n" end end RUBY else @metaclass.class_eval <<-RUBY def on_result(result) print( ansi_styled_msg( self.send("\#{result.to_sym}_abbrev"), result.type ) ) @results_to_dump << ResultData.for_result(result) if dumpable_result?(result) end RUBY end end