airshipctl/tools/coverage_check
Ian Howell dc9c78b210 Fix the coverage tests
This fixes a bug where `make cover` was missing packages. The target now
covers all code except for code placed in the top level package (such as
main.go) and anything placed in the testutils directory.

This also fixes minor issues with the Dockerfile and the coverage_check
script

Note that this commit also strives to increase code coverage beyond the
80% margin

Change-Id: I9e1cbcf841cc869345a00f05e39774cb3da10065
2019-10-02 15:18:56 -05:00

24 lines
635 B
Bash
Executable File

#!/bin/bash
set -e
if [[ $# -ne 1 ]]; then
printf "Usage: %s <coverfile>\n" "$0"
exit 0
fi
cover_file=$1
min_coverage=80
coverage_report=$(go tool cover -func="$cover_file")
printf "%s\n" "$coverage_report"
coverage_float=$(awk "/^total:/ { print \$3 }" <<< "$coverage_report")
coverage_int=${coverage_float%.*}
if (( "$coverage_int" < "$min_coverage" )) ; then
printf "FAIL: Test coverage is at %s, which does not meet the required coverage (%s%%)\n" "$coverage_float" "$min_coverage"
exit 1
else
printf "SUCCESS: Test coverage is at %s, which meets the required coverage (%s%%)\n" "$coverage_float" "$min_coverage"
fi