Line | |
---|
1 | module Test
|
---|
2 | module Unit
|
---|
3 | module Util
|
---|
4 | module BacktraceFilter
|
---|
5 | TESTUNIT_FILE_SEPARATORS = %r{[\\/:]}
|
---|
6 | TESTUNIT_PREFIX = __FILE__.split(TESTUNIT_FILE_SEPARATORS)[0..-3]
|
---|
7 | TESTUNIT_RB_FILE = /\.rb\Z/
|
---|
8 |
|
---|
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
|
---|
37 | end
|
---|
38 | end
|
---|
39 | end
|
---|
40 | end
|
---|
Note:
See
TracBrowser
for help on using the repository browser.