Sha256: 595ee1055c86e43f1ced3d45edf4c7c57eb82852ffe048cb8a870b2564f695f9
Contents?: true
Size: 1.68 KB
Versions: 10
Compression:
Stored size: 1.68 KB
Contents
require 'cgi' require 'rspec/core/formatters/html_formatter' module RSpec module Core module Formatters # Formats backtraces so they're clickable by TextMate class TextMateFormatter < HtmlFormatter class NonEscapingHtmlPrinter < RSpec::Core::Formatters::HtmlPrinter def print_example_failed(pending_fixed, description, run_time, failure_id, exception, extra_content, escape_backtrace = false) # Call implementation from superclass, but ignore `escape_backtrace` and always pass `false` instead. super(pending_fixed, description, run_time, failure_id, exception, extra_content, false) end end def initialize(output) super @printer = NonEscapingHtmlPrinter.new(output) end def backtrace_line(line, skip_textmate_conversion=false) if skip_textmate_conversion super(line) else format_backtrace_line_for_textmate(super(line)) end end def format_backtrace_line_for_textmate(line) return nil unless line CGI.escapeHTML(line).sub(/([^:]*\.e?rb):(\d*)/) do "<a href=\"txmt://open?url=file://#{File.expand_path($1)}&line=#{$2}\">#{$1}:#{$2}</a> " end end def extra_failure_content(exception) require 'rspec/core/formatters/snippet_extractor' backtrace = exception.backtrace.map {|line| backtrace_line(line, :skip_textmate_conversion)} backtrace.compact! @snippet_extractor ||= SnippetExtractor.new " <pre class=\"ruby\"><code>#{@snippet_extractor.snippet(backtrace)}</code></pre>" end end end end end
Version data entries
10 entries across 10 versions & 3 rubygems