From c9f3573d8be8045313ff3e3f1fcef211db536005 Mon Sep 17 00:00:00 2001 From: Jamie Holdstock Date: Thu, 24 Nov 2022 15:53:47 +0800 Subject: [PATCH] build: Only invoke tests once. `go test $ROOTPATH/...` runs all tests in the root module, and all tests in submodules, so there is no need to run `go test` in the loop which descends into submodule directories. Doing this actually causes each test file to be run twice because the first iteration of the loop *is* the root module, and thus all tests. Only the linter needs to be invoked from each module directory. --- run_tests.sh | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/run_tests.sh b/run_tests.sh index 1e9b824..f0cf967 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -4,36 +4,40 @@ # Use of this source code is governed by an ISC # license that can be found in the LICENSE file. # -# usage: -# ./run_tests.sh +# Usage: +# ./run_tests.sh set -e go version -# run tests on all modules -ROOTPKG=$(go list -m) +# Run tests on root module and all submodules. +echo "==> test all modules" +ROOTPKG="github.com/decred/vspd" +GORACE="halt_on_error=1" go test -race $ROOTPKG/... + +# Find submodules. ROOTPKGPATTERN=$(echo $ROOTPKG | sed 's/\\/\\\\/g' | sed 's/\//\\\//g') MODPATHS=$(go list -m all | grep "^$ROOTPKGPATTERN" | cut -d' ' -f1) -for module in $MODPATHS; do - echo "==> ${module}" - env GORACE="halt_on_error=1" go test -race ${module}/... - # check linters +for module in $MODPATHS; do + + echo "==> lint ${module}" + + # Get the path of the module. MODNAME=$(echo $module | sed -E -e "s/^$ROOTPKGPATTERN//" \ -e 's,^/,,' -e 's,/v[0-9]+$,,') if [ -z "$MODNAME" ]; then MODNAME=. fi - # run commands in the module directory as a subshell + # Run commands in the module directory as a subshell. ( cd $MODNAME - # run linter golangci-lint run ) done -echo "------------------------------------------" +echo "-----------------------------" echo "Tests completed successfully!"