summaryrefslogtreecommitdiff
path: root/tools/teamcity-coverage-report.sh
blob: 5610202a30aa5c3be10a94114a96181dea06e8fa (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/{print $2}')
total_no_misses=$(awk '/TOTAL/{print $3}')
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}"