~ubuntu-branches/ubuntu/hardy/ruby1.8/hardy-updates

« back to all changes in this revision

Viewing changes to lib/test/unit/util/backtracefilter.rb

  • Committer: Bazaar Package Importer
  • Author(s): akira yamada
  • Date: 2007-03-13 22:11:58 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20070313221158-h3oql37brlaf2go2
Tags: 1.8.6-1
* new upstream version, 1.8.6.
* libruby1.8 conflicts with libopenssl-ruby1.8 (< 1.8.6) (closes: #410018)
* changed packaging style to cdbs from dbs.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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