github.com/opencontainers/umoci@v0.4.8-0.20240508124516-656e4836fb0d/hack/ci-coverage.sh (about) 1 #!/bin/bash 2 # umoci: Umoci Modifies Open Containers' Images 3 # Copyright (C) 2016-2020 SUSE LLC 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 set -Eeuo pipefail 18 19 COVERAGE="$1" 20 21 function coverage() { 22 go tool cover -func "$@" 23 } 24 25 # Sort the coverage of all of the functions. This helps eye-ball what parts of 26 # the project don't have enough test coverage. 27 coverage "$COVERAGE" | egrep -v '^total:' | sort -k 3gr 28 29 # Now find the coverage percentage, to check against the hardcoded lower limit. 30 TOTAL="$(coverage "$COVERAGE" | grep '^total:' | sed -E 's|^[^[:digit:]]*([[:digit:]]+\.[[:digit:]]+)%$|\1|')" 31 CUTOFF="80.0" 32 33 echo "=== TOTAL COVERAGE: ${TOTAL}% ===" 34 if (( "$(echo "$TOTAL < $CUTOFF" | bc)" )) 35 then 36 echo "ERROR: Test coverage has fallen below hard cutoff of $CUTOFF." 37 echo " Failing this CI run, as test coverage is a hard limit." 38 exit 64 39 fi