Class | Spec::Runner::Formatter::BaseTextFormatter |
In: |
lib/spec/runner/formatter/base_text_formatter.rb
|
Parent: | BaseFormatter |
Baseclass for text-based formatters. Can in fact be used for non-text based ones too - just ignore the output constructor argument.
dry_run | [W] |
Creates a new instance that will write to where. If where is a String, output will be written to the File with that name, otherwise where is exected to be an IO (or an object that responds to puts and write).
# File lib/spec/runner/formatter/base_text_formatter.rb, line 13 13: def initialize(where) 14: super(where) 15: if where.is_a?(String) 16: @output = File.open(where, 'w') 17: elsif where == STDOUT 18: @output = Kernel 19: def @output.flush 20: STDOUT.flush 21: end 22: else 23: @output = where 24: end 25: @colour = false 26: @dry_run = false 27: @snippet_extractor = SnippetExtractor.new 28: end
# File lib/spec/runner/formatter/base_text_formatter.rb, line 30 30: def colour=colour=(colour) 31: @colour = colour 32: begin ; require 'Win32/Console/ANSI' if @colour && PLATFORM =~ /win32/ ; rescue LoadError ; raise "You must gem install win32console to use colour on Windows" ; end 33: end
# File lib/spec/runner/formatter/base_text_formatter.rb, line 35 35: def dump_failure(counter, failure) 36: @output.puts 37: @output.puts "#{counter.to_s})" 38: if(failure.expectation_not_met?) 39: @output.puts red(failure.header) 40: @output.puts red(failure.exception.message) 41: else 42: @output.puts magenta(failure.header) 43: @output.puts magenta(failure.exception.message) 44: end 45: @output.puts format_backtrace(failure.exception.backtrace) 46: @output.flush 47: end
# File lib/spec/runner/formatter/base_text_formatter.rb, line 49 49: def dump_summary(duration, example_count, failure_count, not_implemented_count) 50: return if @dry_run 51: @output.puts 52: @output.puts "Finished in #{duration} seconds" 53: @output.puts 54: 55: summary = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}" 56: summary << ", #{not_implemented_count} not implemented" if not_implemented_count > 0 57: 58: if failure_count == 0 59: if not_implemented_count > 0 60: @output.puts yellow(summary) 61: else 62: @output.puts green(summary) 63: end 64: else 65: @output.puts red(summary) 66: end 67: @output.flush 68: end
# File lib/spec/runner/formatter/base_text_formatter.rb, line 70 70: def format_backtrace(backtrace) 71: return "" if backtrace.nil? 72: backtrace.map { |line| backtrace_line(line) }.join("\n") 73: end
# File lib/spec/runner/formatter/base_text_formatter.rb, line 77 77: def backtrace_line(line) 78: line.sub(/\A([^:]+:\d+)$/, '\\1:') 79: end
# File lib/spec/runner/formatter/base_text_formatter.rb, line 81 81: def colour(text, colour_code) 82: return text unless @colour && output_to_tty? 83: "#{colour_code}#{text}\e[0m" 84: end
# File lib/spec/runner/formatter/base_text_formatter.rb, line 95 95: def green(text); colour(text, "\e[32m"); end
# File lib/spec/runner/formatter/base_text_formatter.rb, line 96 96: def magenta(text); colour(text, "\e[35m"); end
# File lib/spec/runner/formatter/base_text_formatter.rb, line 86 86: def output_to_tty? 87: begin 88: @output == Kernel || @output.tty? 89: rescue NoMethodError 90: false 91: end 92: end
# File lib/spec/runner/formatter/base_text_formatter.rb, line 94 94: def red(text); colour(text, "\e[31m"); end