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
39
40
41
42
43
|
# 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"]
if prefix
split_prefix = prefix.split(TESTUNIT_FILE_SEPARATORS)
else
split_prefix = TESTUNIT_PREFIX
end
test_unit_internal_p = lambda do |entry|
components = entry.split(TESTUNIT_FILE_SEPARATORS)
split_entry = components[0, split_prefix.size]
next false unless split_entry[0..-2] == split_prefix[0..-2]
split_entry[-1].sub(TESTUNIT_RB_FILE, '') == split_prefix[-1]
end
in_user_code = false
new_backtrace = backtrace.reverse.reject do |entry|
if test_unit_internal_p.call(entry)
in_user_code = true
true
else
not in_user_code
end
end.reverse
if new_backtrace.empty?
new_backtrace = backtrace.reject do |entry|
test_unit_internal_p.call(entry)
end
new_backtrace = backtrace if new_backtrace.empty?
end
new_backtrace
end
|