Module: SimpleCov

Defined in:
lib/simplecov.rb,
lib/simplecov/filter.rb,
lib/simplecov/result.rb,
lib/simplecov/railtie.rb,
lib/simplecov/version.rb,
lib/simplecov/formatter.rb,
lib/simplecov/source_file.rb

Overview

Code coverage for ruby 1.9. Please check out README for a full introduction.

Defined Under Namespace

Modules: ArrayMergeHelper, CommandGuesser, Configuration, ExitCodes, Formatter, HashMergeHelper, JSON, LastRun, ResultMerger Classes: Adapters, BlockFilter, CoverageDataError, FileList, Filter, Railtie, Result, SourceFile, StringFilter

Constant Summary

VERSION =
"0.7.1"

Class Attribute Summary (collapse)

Class Method Summary (collapse)

Class Attribute Details

+ (Object) running

, :result # TODO: Remove result?



9
10
11
# File 'lib/simplecov.rb', line 9

def running
  @running
end

Class Method Details

+ (Object) filtered(files)

Applies the configured filters to the given array of SimpleCov::SourceFile items



68
69
70
71
72
73
74
# File 'lib/simplecov.rb', line 68

def filtered(files)
  result = files.clone
  filters.each do |filter|
    result = result.reject {|source_file| filter.matches?(source_file) }
  end
  SimpleCov::FileList.new result
end

+ (Object) grouped(files)

Applies the configured groups to the given array of SimpleCov::SourceFile items



79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/simplecov.rb', line 79

def grouped(files)
  grouped = {}
  grouped_files = []
  groups.each do |name, filter|
    grouped[name] = SimpleCov::FileList.new(files.select {|source_file| filter.matches?(source_file)})
    grouped_files += grouped[name]
  end
  if groups.length > 0 and (other_files = files.reject {|source_file| grouped_files.include?(source_file)}).length > 0
    grouped["Ungrouped"] = SimpleCov::FileList.new(other_files)
  end
  grouped
end

+ (Object) load_adapter(name)

Applies the adapter of given name on SimpleCov configuration



95
96
97
# File 'lib/simplecov.rb', line 95

def load_adapter(name)
  adapters.load(name)
end

+ (Object) result

Returns the result for the current coverage run, merging it across test suites from cache using SimpleCov::ResultMerger if use_merging is activated (default)



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/simplecov.rb', line 43

def result
  @result ||= SimpleCov::Result.new(Coverage.result) if running
  # If we're using merging of results, store the current result
  # first, then merge the results and return those
  if use_merging
    SimpleCov::ResultMerger.store_result(@result) if @result
    return SimpleCov::ResultMerger.merged_result
  else
    return @result if defined? @result
  end
ensure
  self.running = false
end

+ (Boolean) result?

Returns nil if the result has not been computed Otherwise, returns the result

Returns:

  • (Boolean)


61
62
63
# File 'lib/simplecov.rb', line 61

def result?
  defined? @result and @result
end

+ (Object) start(adapter = nil, &block)

Sets up SimpleCov to run against your project. You can optionally specify an adapter to use as well as configuration with a block:

SimpleCov.start
 OR
SimpleCov.start 'rails' # using rails adapter
 OR
SimpleCov.start do
  add_filter 'test'
end
  OR
SimpleCov.start 'rails' do
  add_filter 'test'
end

Please check out the RDoc for SimpleCov::Configuration to find about available config options



28
29
30
31
32
33
34
35
36
37
# File 'lib/simplecov.rb', line 28

def start(adapter=nil, &block)
  return false unless SimpleCov.usable?

  require 'coverage'
  load_adapter(adapter) unless adapter.nil?
  Coverage.start
  configure(&block) if block_given?
  @result = nil
  self.running = true
end

+ (Boolean) usable?

Checks whether we're on a proper version of ruby (1.9+) and returns false if this is not the case, also printing an appropriate warning

Returns:

  • (Boolean)


103
104
105
106
107
108
109
# File 'lib/simplecov.rb', line 103

def usable?
  unless "1.9".respond_to?(:encoding)
    warn "WARNING: SimpleCov is activated, but you're not running Ruby 1.9+ - no coverage analysis will happen"
    return false
  end
  true
end