#!/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}"

#!/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}"

Fix TeamCity Service Messages, 'key', not '<key>'
Fix TeamCity Service Messages, 'key', not '<key>'
