Module | Test::Unit::Util::BacktraceFilter |
In: |
lib/test/unit/util/backtracefilter.rb
|
TESTUNIT_FILE_SEPARATORS | = | %r{[\\/:]} |
TESTUNIT_PREFIX | = | __FILE__.split(TESTUNIT_FILE_SEPARATORS)[0..-3] |
TESTUNIT_RB_FILE | = | /\.rb\Z/ |
# File lib/test/unit/util/backtracefilter.rb, line 9 9: def filter_backtrace(backtrace, prefix=nil) 10: return ["No backtrace"] unless(backtrace) 11: split_p = if(prefix) 12: prefix.split(TESTUNIT_FILE_SEPARATORS) 13: else 14: TESTUNIT_PREFIX 15: end 16: match = proc do |e| 17: split_e = e.split(TESTUNIT_FILE_SEPARATORS)[0, split_p.size] 18: next false unless(split_e[0..-2] == split_p[0..-2]) 19: split_e[-1].sub(TESTUNIT_RB_FILE, '') == split_p[-1] 20: end 21: return backtrace unless(backtrace.detect(&match)) 22: found_prefix = false 23: new_backtrace = backtrace.reverse.reject do |e| 24: if(match[e]) 25: found_prefix = true 26: true 27: elsif(found_prefix) 28: false 29: else 30: true 31: end 32: end.reverse 33: new_backtrace = (new_backtrace.empty? ? backtrace : new_backtrace) 34: new_backtrace = new_backtrace.reject(&match) 35: new_backtrace.empty? ? backtrace : new_backtrace 36: end