github.com/openshift/source-to-image@v1.4.1-0.20240516041539-bf52fc02204e/hack/test-go.sh (about) 1 #!/bin/bash 2 3 set -o errexit 4 set -o nounset 5 set -o pipefail 6 7 S2I_ROOT=$(dirname "${BASH_SOURCE}")/.. 8 source "${S2I_ROOT}/hack/common.sh" 9 10 # Go to the top of the tree. 11 cd "${S2I_ROOT}" 12 13 s2i::build::setup_env 14 15 find_test_dirs() { 16 cd "${S2I_ROOT}" 17 find . -not \( \ 18 \( \ 19 -wholename './release' \ 20 -o -wholename './target' \ 21 -o -wholename './vendor' \ 22 -o -wholename '*/_output/*' \ 23 -o -wholename './.git' \ 24 \) -prune \ 25 \) -name '*_test.go' -print0 | xargs -0n1 dirname | sort -u | xargs -n1 printf "${S2I_GO_PACKAGE}/%s\n" 26 } 27 28 S2I_RACE=${S2I_RACE--race} 29 S2I_COVER=${S2I_COVER--cover} 30 S2I_TIMEOUT=${S2I_TIMEOUT--timeout 60s} 31 S2I_BUILD_TAGS="${S2I_BUILD_TAGS:-}" 32 33 if [ "${1-}" != "" ]; then 34 test_packages="$S2I_GO_PACKAGE/$1" 35 else 36 test_packages=`find_test_dirs` 37 fi 38 39 OUTPUT_COVERAGE=${OUTPUT_COVERAGE-} 40 41 if [[ -n "${OUTPUT_COVERAGE}" ]]; then 42 # Iterate over packages to run coverage 43 test_packages=( $test_packages ) 44 for test_package in "${test_packages[@]}" 45 do 46 mkdir -p "$OUTPUT_COVERAGE/$test_package" 47 PROFILEPATH=${OUTPUT_COVERAGE}/${test_package}/profile.out 48 if [[ ${OSTYPE} == "cygwin" ]]; then 49 PROFILEPATH=$(cygpath -w ${PROFILEPATH}) 50 fi 51 S2I_COVER_PROFILE="-coverprofile=${PROFILEPATH}" 52 53 go test -tags "$S2I_BUILD_TAGS exclude_graphdriver_devicemapper exclude_graphdriver_btrfs" $S2I_RACE $S2I_TIMEOUT $S2I_COVER "$S2I_COVER_PROFILE" "$test_package" "${@:2}" 54 done 55 56 echo 'mode: atomic' > ${OUTPUT_COVERAGE}/profiles.out 57 find $OUTPUT_COVERAGE -name profile.out | xargs sed '/^mode: atomic$/d' >> ${OUTPUT_COVERAGE}/profiles.out 58 PROFILES_OUT=${OUTPUT_COVERAGE}/profiles.out 59 COVERAGE_HTML=${OUTPUT_COVERAGE}/coverage.html 60 if [[ ${OSTYPE} == "cygwin" ]]; then 61 PROFILES_OUT=$(cygpath -w ${PROFILES_OUT}) 62 COVERAGE_HTML=$(cygpath -w ${COVERAGE_HTML}) 63 fi 64 65 go tool cover -html=${PROFILES_OUT} -o ${COVERAGE_HTML} 66 67 # remove ${OUTPUT_COVERAGE}/github.com 68 rm -rf $OUTPUT_COVERAGE/${S2I_GO_PACKAGE%%/*} 69 else 70 go test -tags "$S2I_BUILD_TAGS exclude_graphdriver_devicemapper exclude_graphdriver_btrfs" $S2I_RACE $S2I_TIMEOUT $S2I_COVER "${@:2}" $test_packages 71 fi