Class: Henitai::PerTestCoverageSelector

Inherits:
Object
  • Object
show all
Defined in:
lib/henitai/per_test_coverage_selector.rb

Overview

Narrows candidate test files using the per-test coverage report.

Instance Method Summary collapse

Constructor Details

#initialize(coverage_report_reader: CoverageReportReader.new) ⇒ PerTestCoverageSelector

Returns a new instance of PerTestCoverageSelector.



6
7
8
# File 'lib/henitai/per_test_coverage_selector.rb', line 6

def initialize(coverage_report_reader: CoverageReportReader.new)
  @coverage_report_reader = coverage_report_reader
end

Instance Method Details

#filter(tests, mutant, reports_dir:) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/henitai/per_test_coverage_selector.rb', line 10

def filter(tests, mutant, reports_dir:)
  candidates = Array(tests)
  return candidates if candidates.empty?
  return candidates unless location_available?(mutant)
  return candidates unless per_test_coverage_available?(reports_dir)

  covered_tests = candidates.select do |test|
    covers_mutant?(test, mutant, reports_dir)
  end
  covered_tests.empty? ? candidates : covered_tests
end