#!/bin/bash # This is to be executed by each individual OS test. It only # combines coverage files and reports locally to the given # TeamCity build configuration. set -e set -o pipefail [ -z ${TEMP} ] && TEMP=/tmp # combine all .coverage* files, coverage combine # create ascii report, report_file=$(mktemp $TEMP/coverage.XXXXX) coverage report --rcfile=`dirname $0`/../.coveragerc > "${report_file}" 2>/dev/null # Report Code Coverage for TeamCity, using 'Service Messages', # https://confluence.jetbrains.com/display/TCD8/How+To...#HowTo...-ImportcoverageresultsinTeamCity # https://confluence.jetbrains.com/display/TCD8/Custom+Chart#CustomChart-DefaultStatisticsValuesProvidedbyTeamCity total_no_lines=$(awk '/TOTAL/{printf("%s",$2)}' < "${report_file}") total_no_misses=$(awk '/TOTAL/{printf("%s",$3)}' < "${report_file}") total_no_covered=$((${total_no_lines} - ${total_no_misses})) echo "##teamcity[buildStatisticValue key='CodeCoverageAbsLTotal' value='""${total_no_lines}""']" echo "##teamcity[buildStatisticValue key='CodeCoverageAbsLCovered' value='""${total_no_covered}""']" # Display for human consumption and remove ascii file. cat "${report_file}" rm "${report_file}"