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