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