Sha256: f9f2b01edc977bd67754521d23ce99aa3f8ce5e96f9a4dd25a1e6f88b1e72d94

Contents?: true

Size: 1.58 KB

Versions: 6

Compression:

Stored size: 1.58 KB

Contents

module Xcov
  class IgnoreHandler

    attr_accessor :list

    def initialize
      @list = IgnoreHandler.read_ignore_file
    end

    def should_ignore_file filename
      return false if @list.empty?
      return true if @list.include?(filename)

      # Evaluate possible regexs
      return @list.any? { |pattern| filename =~ Regexp.new("#{pattern}$") }
    end

    def should_ignore_file_at_path path
      # Ignore specific files
      filename = File.basename(path)
      return true if should_ignore_file(filename)
      
      # Also ignore the files from ignored folders
      relative = relative_path(path)
      return @list.any? { |ignored_path| relative_path(path).start_with? ignored_path }
    end

    # Static methods

    def self.read_ignore_file
      require "yaml"
      ignore_file_path = Xcov.config[:ignore_file_path]
      ignore_list = []
      begin
        ignore_list = YAML.load_file(ignore_file_path)
      rescue
        UI.message "Skipping file blacklisting as no ignore file was found at path #{ignore_file_path}".yellow
      end

      return ignore_list
    end

    # Auxiliary methods

    # Returns a relative path against `source_directory`.
    def relative_path path
      require 'pathname'

      full_path = Pathname.new(path).realpath             # /full/path/to/project/where/is/file.extension
      base_path = Pathname.new(source_directory).realpath # /full/path/to/project/

      full_path.relative_path_from(base_path).to_s        # where/is/file.extension
    end

    def source_directory
      Xcov.config[:source_directory] || Dir.pwd
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
xcov-1.0.0 lib/xcov/ignore_handler.rb
xcov-0.12.5 lib/xcov/ignore_handler.rb
xcov-0.12.4 lib/xcov/ignore_handler.rb
xcov-0.12.3 lib/xcov/ignore_handler.rb
xcov-0.12.2 lib/xcov/ignore_handler.rb
xcov-0.12.1 lib/xcov/ignore_handler.rb