Class | Spec::Runner::Formatter::HtmlFormatter |
In: |
lib/spec/runner/formatter/html_formatter.rb
|
Parent: | BaseTextFormatter |
# File lib/spec/runner/formatter/html_formatter.rb, line 5 5: def initialize(output, dry_run=false, colour=false) 6: super 7: @current_spec_number = 0 8: @current_context_number = 0 9: end
# File lib/spec/runner/formatter/html_formatter.rb, line 18 18: def add_context(name, first) 19: @current_context_number += 1 20: unless first 21: @output.puts " </dl>" 22: @output.puts "</div>" 23: end 24: @output.puts "<div class=\"context\">" 25: @output.puts " <dl>" 26: @output.puts " <dt id=\"context_#{@current_context_number}\">#{name}</dt>" 27: STDOUT.flush 28: end
# File lib/spec/runner/formatter/html_formatter.rb, line 79 79: def dump_failure(counter, failure) 80: end
# File lib/spec/runner/formatter/html_formatter.rb, line 82 82: def dump_summary(duration, spec_count, failure_count) 83: if @dry_run 84: totals = "This was a dry-run" 85: else 86: totals = "#{spec_count} specification#{'s' unless spec_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}" 87: end 88: @output.puts "<script type=\"text/javascript\">document.getElementById('duration').innerHTML = \"Finished in <strong>#{duration} seconds</strong>\";</script>" 89: @output.puts "<script type=\"text/javascript\">document.getElementById('totals').innerHTML = \"#{totals}\";</script>" 90: @output.puts "</div>" 91: @output.puts "</body>" 92: @output.puts "</html>" 93: STDOUT.flush 94: end
# File lib/spec/runner/formatter/html_formatter.rb, line 75 75: def escape(string) 76: string.gsub(/&/n, '&').gsub(/\"/n, '"').gsub(/>/n, '>').gsub(/</n, '<') 77: 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. Example:
# File lib/spec/runner/formatter/html_formatter.rb, line 67 67: def extra_failure_content 68: end
# File lib/spec/runner/formatter/html_formatter.rb, line 70 70: def move_progress 71: percent_done = @spec_count == 0 ? 100.0 : (@current_spec_number.to_f / @spec_count.to_f * 1000).to_i / 10.0 72: @output.puts " <script type=\"text/javascript\">moveProgressBar('#{percent_done}');</script>" 73: end
# File lib/spec/runner/formatter/html_formatter.rb, line 48 48: def spec_failed(name, counter, failure) 49: @output.puts " <script type=\"text/javascript\">makeRed('header');</script>" 50: @output.puts " <script type=\"text/javascript\">makeRed('context_#{@current_context_number}');</script>" 51: move_progress 52: @output.puts " <dd class=\"spec failed\">" 53: @output.puts " <span class=\"failed_spec_name\">#{escape(@current_spec)}</span>" 54: @output.puts " <div class=\"failure\" id=\"failure_#{counter}\">" 55: @output.puts " <div class=\"message\"><pre>#{escape(failure.exception.message)}</pre></div>" unless failure.exception.nil? 56: @output.puts " <div class=\"backtrace\"><pre>#{format_backtrace(failure.exception.backtrace)}</pre></div>" unless failure.exception.nil? 57: extra_failure_content 58: @output.puts " </div>" 59: @output.puts " </dd>" 60: STDOUT.flush 61: end
# File lib/spec/runner/formatter/html_formatter.rb, line 42 42: def spec_passed(name) 43: move_progress 44: @output.puts " <dd class=\"spec passed\"><span class=\"passed_spec_name\">#{escape(@current_spec)}</span></dd>" 45: STDOUT.flush 46: end
# File lib/spec/runner/formatter/html_formatter.rb, line 36 36: def spec_started(name) 37: @current_spec = name 38: @current_spec_number += 1 39: STDOUT.flush 40: end
# File lib/spec/runner/formatter/html_formatter.rb, line 11 11: def start(spec_count) 12: @spec_count = spec_count 13: 14: @output.puts @@header 15: STDOUT.flush 16: end