class RSpec::Coverage::Runner

Public Class Methods

new(map, coverage: ::Coverage.method(:peek_result)) click to toggle source
# File lib/rspec/coverage/runner.rb, line 3
def initialize map, coverage: ::Coverage.method(:peek_result)
  @map, @coverage = map, coverage
  @exclusions = Excludes.new map.root
end

Public Instance Methods

call(ex) click to toggle source
# File lib/rspec/coverage/runner.rb, line 8
def call ex
  if klasses = ex.metadata[:covers]
    run_filtered klasses, ex
  elsif klass = ex.metadata[:described_class]
    run_filtered [klass], ex
  else
    ex.call
  end
end
result() click to toggle source
# File lib/rspec/coverage/runner.rb, line 18
def result
  @exclusions.deduct(@coverage.call).to_h
end

Private Instance Methods

run_filtered(klasses, example) click to toggle source
# File lib/rspec/coverage/runner.rb, line 24
def run_filtered klasses, example
  before = @coverage.call
  example.call
  @exclusions.record \
    before: before,
    after:  @coverage.call,
    mask:   @map.mask(*klasses)
end