blob: cfd8f87f5d9ad7210baba4a3eb98a4ec958e0c28 (
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#!/usr/bin/env bash
set -euo pipefail
JACOCO_REPORT="$1"
MIN_COVERAGE_PERCENT="$2"
ROOT_SOURCES_MODULE_POM="$3"
LOG_FILE=target/check-coverage.log
function coverage_from_report() {
local xpath_expr="string(/report/counter[@type='INSTRUCTION']/@$1)"
xpath -q -e "$xpath_expr" "$JACOCO_REPORT" 2>> ${LOG_FILE}
}
function check_preconditions() {
local num_deps=$(grep -c 'project\.parent\.groupId' pom.xml)
local num_submodules=$(grep -c '<module>' ${ROOT_SOURCES_MODULE_POM})
local difference=$((${num_submodules}-${num_deps}))
if [[ ${difference} -ne 0 ]]; then
echo "Not all modules are included in the coverage report."
echo "Verify if all submodules of hv-collector-sources module are included as a dependency to hv-collector-coverage module."
echo "Number of missing modules: ${difference}"
exit 1
fi
}
function check_coverage() {
local missed=$(coverage_from_report missed)
local covered=$(coverage_from_report covered)
local total=$(($missed + $covered))
local coverage=$((100 * $covered / $total))
if [[ $(wc -c < ${LOG_FILE}) > 0 ]]; then
echo "Warnings from xpath evaluation:"
cat ${LOG_FILE}
echo
fi
echo "Coverage: $coverage% (covered/total: $covered/$total)"
if [[ ${coverage} -lt ${MIN_COVERAGE_PERCENT} ]]; then
echo "Coverage is too low. Minimum coverage: $MIN_COVERAGE_PERCENT%"
exit 1
fi
}
check_preconditions || exit 1
check_coverage || exit 2
|