Class | RCov::VerifyTask
In: | lib/spec/rake/verify_rcov.rb
Parent: | Rake::TaskLib

A task that can verify that the RCov coverage doesn‘t drop below a certain threshold. It should be run after running Spec::Rake::SpecTask.

### Methods

define new

### Attributes

index_html | [RW] | Path to the index.html file generated by RCov, which is the file containing the total coverage. Defaults to ‘coverage/index.html‘
name | [RW] | Name of the task. Defaults to :verify_rcov
require_exact_threshold | [RW] | Require the threshold value be met exactly. This is the default.
threshold | [RW] | The threshold value (in percent) for coverage. If the actual coverage is not equal to this value, the task will raise an exception.
verbose | [RW] | Whether or not to output details. Defaults to true.

### Public Class methods

new(name=:verify_rcov) {|self if block_given?| ...}

[Source]

        # File lib/spec/rake/verify_rcov.rb, line 25
    25:     def initialize(name=:verify_rcov)
    26:       @name = name
    27:       @index_html = 'coverage/index.html'
    28:       @verbose = true
    29:       @require_exact_threshold = true
    30:       yield self if block_given?
    31:       raise "Threshold must be set" if @threshold.nil?
    32:       define
    33:     end

### Public Instance methods

define()

[Source]

        # File lib/spec/rake/verify_rcov.rb, line 35
    35:     def define
    36:       desc "Verify that rcov coverage is at least #{threshold}%"
    37:       task @name do
    38:         total_coverage = nil
    39:
    40:         File.open(index_html).each_line do |line|
    41:           if line =~ /<tt.*>(\d+\.\d+)%<\/tt>&nbsp;<\/td>/
    42:             total_coverage = eval($1)
    43:             break
    44:           end
    45:         end
    46:         puts "Coverage: #{total_coverage}% (threshold: #{threshold}%)" if verbose
    47:         raise "Coverage must be at least #{threshold}% but was #{total_coverage}%" if total_coverage < threshold
    48:         raise "Coverage has increased above the threshold of #{threshold}% to #{total_coverage}%. You should update your threshold value." if (total_coverage > threshold) and require_exact_threshold
    49:       end
    50:     end

[Validate]