summaryrefslogtreecommitdiff
path: root/tools/teamcity-coverage-report.sh
blob: 2e32241b7b71c3f28c040f9910b766f2a6becdde (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/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}"