Class: Xcov::IgnoreHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/xcov/ignore_handler.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeIgnoreHandler

Returns a new instance of IgnoreHandler.



7
8
9
# File 'lib/xcov/ignore_handler.rb', line 7

def initialize
  @list = IgnoreHandler.read_ignore_file
end

Instance Attribute Details

#listObject

Returns the value of attribute list.



5
6
7
# File 'lib/xcov/ignore_handler.rb', line 5

def list
  @list
end

Class Method Details

.read_ignore_fileObject

Static methods



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/xcov/ignore_handler.rb', line 31

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

Instance Method Details

#relative_path(path) ⇒ Object

Returns a relative path against ‘source_directory`.



47
48
49
50
51
52
53
54
# File 'lib/xcov/ignore_handler.rb', line 47

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

#should_ignore_file(filename) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/xcov/ignore_handler.rb', line 11

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

#should_ignore_file_at_path(path) ⇒ Object



19
20
21
22
23
24
25
26
27
# File 'lib/xcov/ignore_handler.rb', line 19

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

#source_directoryObject



56
57
58
# File 'lib/xcov/ignore_handler.rb', line 56

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