github.com/gopherd/gonum@v0.0.4/.github/workflows/script.d/test-coverage.sh (about) 1 #!/bin/bash 2 3 MODE=set 4 PROFILE_OUT="${PWD}/profile.out" 5 ACC_OUT="${PWD}/coverage.txt" 6 7 testCover() { 8 # set the return value to 0 (successful) 9 retval=0 10 # get the directory to check from the parameter. Default to '.' 11 d=${1:-.} 12 # skip if there are no Go files here 13 ls $d/*.go &> /dev/null || return $retval 14 # switch to the directory to check 15 pushd $d > /dev/null 16 # create the coverage profile 17 coverageresult=$(go test $TAGS -coverprofile="${PROFILE_OUT}" -covermode=${MODE}) 18 # output the result so we can check the shell output 19 echo ${coverageresult} 20 # append the results to acc.out if coverage didn't fail, else set the retval to 1 (failed) 21 ( [[ ${coverageresult} == *FAIL* ]] && retval=1 ) || ( [ -f "${PROFILE_OUT}" ] && grep -v "mode: ${MODE}" "${PROFILE_OUT}" >> "${ACC_OUT}" ) 22 # return to our working dir 23 popd > /dev/null 24 # return our return value 25 return $retval 26 } 27 28 # Init coverage.txt 29 echo "mode: ${MODE}" > $ACC_OUT 30 31 # Run test coverage on all directories containing go files except testlapack, testblas, testgraph and testrand. 32 find . -type d -not -path '*testlapack*' -and -not -path '*testblas*' -and -not -path '*testgraph*' -and -not -path '*testrand*' | while read d; do testCover $d || exit; done