| 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