module Slather::CoverageInfo
def branch_coverage_data_for_statement_on_line(line_number)
def branch_coverage_data_for_statement_on_line(line_number) branch_coverage_data[line_number] || [] end
def ignored?
def ignored? project.ignore_list.any? do |ignore| File.fnmatch(ignore, source_file_pathname_relative_to_repo_root) end end
def include_file?
def include_file? rv = true # default true return value to fix https://github.com/SlatherOrg/slather/issues/561 project.source_files.any? do |include| rv = File.fnmatch(include, source_file_pathname_relative_to_repo_root) end rv end
def num_branch_hits_for_statement_on_line(line_number)
def num_branch_hits_for_statement_on_line(line_number) branch_coverage_data_for_statement_on_line(line_number).count { |hit_count| hit_count > 0 } end
def num_branches_for_statement_on_line(line_number)
def num_branches_for_statement_on_line(line_number) branch_coverage_data_for_statement_on_line(line_number).length end
def num_branches_testable
def num_branches_testable branch_coverage_data.keys.reduce(0) do |sum, line_number| sum += num_branches_for_statement_on_line(line_number) end end
def num_branches_tested
def num_branches_tested branch_coverage_data.keys.reduce(0) do |sum, line_number| sum += num_branch_hits_for_statement_on_line(line_number) end end
def num_lines_testable
def num_lines_testable line_coverage_data.compact.count end
def num_lines_tested
def num_lines_tested line_coverage_data.compact.select { |cd| cd > 0 }.count end
def percentage_branch_coverage_for_statement_on_line(line_number)
def percentage_branch_coverage_for_statement_on_line(line_number) rate_branch_coverage_for_statement_on_line(line_number) * 100 end
def percentage_lines_tested
def percentage_lines_tested if num_lines_testable == 0 100 else rate_lines_tested * 100 end end
def rate_branch_coverage_for_statement_on_line(line_number)
def rate_branch_coverage_for_statement_on_line(line_number) branch_data = branch_coverage_data_for_statement_on_line(line_number) if branch_data.empty? 0.0 else (num_branch_hits_for_statement_on_line(line_number) / branch_data.length.to_f) end end
def rate_branches_tested
def rate_branches_tested if (num_branches_testable > 0) (num_branches_tested / num_branches_testable.to_f) else 0.0 end end
def rate_lines_tested
def rate_lines_tested if num_lines_testable > 0 (num_lines_tested / num_lines_testable.to_f) else 0 end end
def source_file_pathname_relative_to_repo_root
def source_file_pathname_relative_to_repo_root source_file_pathname.realpath.relative_path_from(Pathname("./").realpath) end