Class: Speccloak::BranchCoverageChecker

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/speccloak/branch_coverage_checker.rb

Overview

Checks and reports branch coverage for changed/untracked files in a project.

Instance Method Summary collapse

Constructor Details

#initialize(base: "origin/main", format: "text", exclude_patterns: [], cmd_runner: ->(cmd) { `#{cmd}` }, file_reader: ->(path) { File.read(path) }) ⇒ BranchCoverageChecker

Returns a new instance of BranchCoverageChecker.



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/speccloak/branch_coverage_checker.rb', line 41

def initialize(
  base: "origin/main",
  format: "text",
  exclude_patterns: [],
  cmd_runner: ->(cmd) { `#{cmd}` },
  file_reader: ->(path) { File.read(path) }
)
  @base = base
  @format = format
  @uncovered_lines = []
  @total_changed_lines = 0
  @covered_changed_lines = 0
  @exclude_patterns = exclude_patterns.map { |p| /#{p}/ }
  @untracked_files = []
  @cmd_runner = cmd_runner
  @file_reader = file_reader
end

Instance Method Details

#runObject



59
60
61
62
63
64
65
66
67
68
# File 'lib/speccloak/branch_coverage_checker.rb', line 59

def run
  coverage_file = find_coverage_file
  return exit_with_status("Coverage file not found.", ExitCodes::FAILURE) unless coverage_file

  changed_files = find_changed_files
  return exit_with_status("No Ruby files changed in this branch.", ExitCodes::SUCCESS) if changed_files.empty?

  analyze_files(changed_files, coverage_file)
  report_results
end