module Spec module Runner module Formatter class HtmlFormatter < BaseTextFormatter def initialize(output) super @current_behaviour_number = 0 @current_example_number = 0 @html_header = true end # The number of the currently running behaviour def current_behaviour_number @current_behaviour_number end # The number of the currently running example def current_example_number @current_example_number end def start(example_count) @example_count = example_count if(@html_header) @output.puts HTML_HEADER end @output.puts REPORT_HEADER end def add_behaviour(name) @current_behaviour_number += 1 unless current_behaviour_number == 1 @output.puts " " @output.puts "" end @output.puts "
" @output.puts "
" @output.puts "
#{escape(name)}
" end def start_dump @output.puts "
" @output.puts "
" end def example_passed(name) @current_example_number += 1 move_progress @output.puts "
#{escape(name)}
" end def example_failed(name, counter, failure) extra = extra_failure_content(failure) @current_example_number += 1 @output.puts " " @output.puts " " move_progress @output.puts "
" @output.puts " #{escape(name)}" @output.puts "
" @output.puts "
#{escape(failure.exception.message)}
" unless failure.exception.nil? @output.puts "
#{format_backtrace(failure.exception.backtrace)}
" unless failure.exception.nil? @output.puts extra unless extra == "" @output.puts "
" @output.puts "
" end # Override this method if you wish to output extra HTML for a failed spec. For example, you # could output links to images or other files produced during the specs. # def extra_failure_content(failure) "
#{@snippet_extractor.snippet(failure.exception)}
" end def move_progress percent_done = @example_count == 0 ? 100.0 : (current_example_number.to_f / @example_count.to_f * 1000).to_i / 10.0 @output.puts " " end def escape(string) string.gsub(/&/n, '&').gsub(/\"/n, '"').gsub(/>/n, '>').gsub(/document.getElementById('duration').innerHTML = \"Finished in #{duration} seconds\";" @output.puts "" @output.puts "" @output.puts "" if(@html_header) @output.puts "" @output.puts "" end end HTML_HEADER = <<-EOF RSpec results EOF REPORT_HEADER = <<-EOF

RSpec Results

 

 

EOF end end end end