module Slather::CoverageService::SimpleOutput

Public Instance Methods

post() click to toggle source
# File lib/slather/coverage_service/simple_output.rb, line 14
def post
  total_project_lines = 0
  total_project_lines_tested = 0
  coverage_files.each do |coverage_file|
    # ignore lines that don't count towards coverage (comments, whitespace, etc). These are nil in the array.

    lines_tested = coverage_file.num_lines_tested
    total_lines = coverage_file.num_lines_testable
    percentage = decimal_f([coverage_file.percentage_lines_tested])

    total_project_lines_tested += lines_tested
    total_project_lines += total_lines

    puts "#{coverage_file.source_file_pathname_relative_to_repo_root}: #{lines_tested} of #{total_lines} lines (#{percentage}%)"
  end

  # check if there needs to be custom reporting based on the ci service
  if ci_service == :teamcity
    # TeamCity Build Statistic Reporting
    #
    # Reporting format ##teamcity[buildStatisticValue key='<valueTypeKey>' value='<value>']
    # key='CodeCoverageAbsLCovered' is total number of lines covered
    # key='CodeCoverageAbsLTotal' is total number of lines
    #
    # Sources:
    # - https://confluence.jetbrains.com/display/TCDL/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-ReportingBuildStatistics
    # - https://confluence.jetbrains.com/display/TCDL/Custom+Chart#CustomChart-listOfDefaultStatisticValues
    puts "##teamcity[buildStatisticValue key='CodeCoverageAbsLCovered' value='%i']" % total_project_lines_tested
    puts "##teamcity[buildStatisticValue key='CodeCoverageAbsLTotal' value='%i']" % total_project_lines
  end

  total_percentage = decimal_f([(total_project_lines_tested / total_project_lines.to_f) * 100.0])
  puts "Tested #{total_project_lines_tested}/#{total_project_lines} statements"
  puts "Test Coverage: #{total_percentage}%"
end

Private Instance Methods

coverage_file_class() click to toggle source
# File lib/slather/coverage_service/simple_output.rb, line 5
def coverage_file_class
  if input_format == "profdata"
    Slather::ProfdataCoverageFile
  else
    Slather::CoverageFile
  end
end