File: backtrace_cleaner.rb

package info (click to toggle)
ruby-rspec-core 2.14.7-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 1,756 kB
  • ctags: 1,195
  • sloc: ruby: 12,708; makefile: 14
file content (46 lines) | stat: -rw-r--r-- 1,204 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
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
44
45
46
module RSpec
  module Core
    class BacktraceCleaner

      DEFAULT_EXCLUSION_PATTERNS = [
        /\/lib\d*\/ruby\//,
        /org\/jruby\//,
        /bin\//,
        %r|/gems/|,
        /spec\/spec_helper\.rb/,
        /lib\/rspec\/(core|expectations|matchers|mocks)/
      ]

      attr_accessor :inclusion_patterns
      attr_accessor :exclusion_patterns

      def initialize(inclusion_patterns=nil, exclusion_patterns=DEFAULT_EXCLUSION_PATTERNS.dup)
        @exclusion_patterns = exclusion_patterns

        if inclusion_patterns.nil?
          @inclusion_patterns = (matches_an_exclusion_pattern? Dir.getwd) ? [Regexp.new(Dir.getwd)] : []
        else
          @inclusion_patterns = inclusion_patterns
        end
      end

      def exclude?(line)
        @inclusion_patterns.none? {|p| line =~ p} and matches_an_exclusion_pattern?(line)
      end

      def full_backtrace=(true_or_false)
        @exclusion_patterns = true_or_false ? [] : DEFAULT_EXCLUSION_PATTERNS.dup
      end

      def full_backtrace?
        @exclusion_patterns.empty?
      end

      private

      def matches_an_exclusion_pattern?(line)
        @exclusion_patterns.any? {|p| line =~ p}
      end
    end
  end
end