Sha256: c284e976d3e34a7b3e61e2d6df1be957b333fabc266e3f98790fd2ebc012a5b1
Contents?: true
Size: 1.18 KB
Versions: 9
Compression:
Stored size: 1.18 KB
Contents
require 'method_source' module Pork module ShowSource def show_source test, err source = test.source sopath = "#{test.source_location.first}:" lowers = test.source_location.last uppers = lowers + source.size lineno = reject_pork(test, err).find do |backtrace| # find the line from the test source, exclude everything else next unless backtrace.start_with?(sopath) number = backtrace[/(?<=\.rb:)\d+/].to_i break number if number >= lowers && number < uppers end return '' unless lineno # TODO: error might be coming from before block lowerl = lineno - lowers upperl = MethodSource.expression_at(source, lowerl + 1). count("\n") + lowerl indent = source[/^\s*/].size result = source.each_line.with_index.map do |source_line, index| line = source_line[indent..-1] || "\n" if index >= lowerl && index < upperl highlight_line(" => #{line}") else backlight_line(" #{line}") end end.join "\n#{result.chomp}" rescue SyntaxError => e "\nPork bug: Cannot parse the source. Please report: #{e}" end end end
Version data entries
9 entries across 9 versions & 1 rubygems