diff --git a/src/runtime/go-test.sh b/src/runtime/go-test.sh index 4f34c2c81b..b87dfc790f 100755 --- a/src/runtime/go-test.sh +++ b/src/runtime/go-test.sh @@ -16,17 +16,19 @@ long_options=( ) # Set up go test flags +# shellcheck disable=SC2154 go_test_flags="${KATA_GO_TEST_FLAGS}" -if [ -z "$go_test_flags" ]; then +if [[ -z "${go_test_flags}" ]]; then # KATA_GO_TEST_TIMEOUT can be set to any value accepted by # "go test -timeout X" go_test_flags="-timeout ${KATA_GO_TEST_TIMEOUT:-30s}" # -race flag is not supported on s390x and riscv64 - [ "$(go env GOARCH)" != "s390x" ] && [ "$(go env GOARCH)" != "riscv64" ] && go_test_flags+=" -race" + [[ "$(go env GOARCH)" != "s390x" ]] && [[ "$(go env GOARCH)" != "riscv64" ]] && go_test_flags+=" -race" # s390x requires special linker flags - [ "$(go env GOARCH)" = s390x ] && go_test_flags+=" -ldflags '-extldflags -Wl,--s390-pgste'" + # shellcheck disable=SC2089 + [[ "$(go env GOARCH)" = s390x ]] && go_test_flags+=" -ldflags '-extldflags -Wl,--s390-pgste'" fi # The "master" coverage file that contains the coverage results for @@ -40,14 +42,14 @@ tmp_coverage_file="${test_coverage_file}.tmp" warn() { local msg="$*" - echo >&2 "WARNING: $msg" + echo >&2 "WARNING: ${msg}" } usage() { cat <> "$test_coverage_file" - rm -f "$tmp_coverage_file" + run_as_user "${user}" tail -n +2 "${tmp_coverage_file}" >> "${test_coverage_file}" + rm -f "${tmp_coverage_file}" } # Run all tests and generate a test coverage file. test_coverage() { - echo "mode: atomic" > "$test_coverage_file" + echo "mode: atomic" > "${test_coverage_file}" users="current" - if [ "$(id -u)" -eq 0 ]; then + if [[ "$(id -u)" -eq 0 ]]; then warn "Already running as root so will not re-run tests as non-root user." warn "As a result, only a subset of tests will be run" warn "(run this script as a non-privileged to ensure all tests are run)." @@ -129,28 +132,28 @@ test_coverage() fi echo "INFO: Currently running as user '$(id -un)'" - for user in $users; do - test_go_package "$package" "$user" + for user in ${users}; do + test_go_package "${package}" "${user}" done } main() { - local long_option_names="${!long_options[@]}" + local long_option_names="${!long_options[*]}" - local args=$(getopt \ - -n "$script_name" \ + local args + args=$(getopt \ + -n "${script_name}" \ -a \ --options="h" \ - --longoptions="$long_option_names" \ + --longoptions="${long_option_names}" \ -- "$@") package="./..." - eval set -- "$args" - [ $? -ne 0 ] && { usage >&2; exit 1; } + if ! eval set -- "${args}"; then usage >&2; exit 1; fi - while [ $# -gt 1 ] + while [[ $# -gt 1 ]] do case "$1" in -h|--help) usage; exit 0 ;;