dcrd/run_tests.sh
Dave Collins 15967e4b79
TravisCI: Disable race detector.
Race-enabled testing is an order of magnitude slower. This causes issues
for pull requests which add more tests, due to elapsed timeouts on the
CI infrastructure, and it is more desirable to have a comprehensive test
suite running without -race than few tests with it.

To test with -race locally, just run go test -race as usual, or (better)
build and run a race-enabled binary.
2019-05-21 20:17:33 -05:00

83 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# usage:
# ./run_tests.sh # local, go 1.12
# GOVERSION=1.11 ./run_tests.sh # local, go 1.11
# ./run_tests.sh docker # docker, go 1.12
# GOVERSION=1.11 ./run_tests.sh docker # docker, go 1.11
# ./run_tests.sh podman # podman, go 1.12
# GOVERSION=1.11 ./run_tests.sh podman # podman, go 1.11
set -ex
# The script does automatic checking on a Go package and its sub-packages,
# including:
# 1. gofmt (https://golang.org/cmd/gofmt/)
# 2. gosimple (https://github.com/dominikh/go-simple)
# 3. unconvert (https://github.com/mdempsky/unconvert)
# 4. ineffassign (https://github.com/gordonklaus/ineffassign)
# 5. go vet (https://golang.org/cmd/vet)
# 6. misspell (https://github.com/client9/misspell)
# golangci-lint (github.com/golangci/golangci-lint) is used to run each each
# static checker.
# To run on docker on windows, symlink /mnt/c to /c and then execute the script
# from the repo path under /c. See:
# https://github.com/Microsoft/BashOnWindows/issues/1854
# for more details.
# Default GOVERSION
[[ ! "$GOVERSION" ]] && GOVERSION=1.12
REPO=dcrd
testrepo () {
GO=go
$GO version
# binary needed for RPC tests
env CC=gcc $GO build
cp "$REPO" "$GOPATH/bin/"
# run tests on all modules
ROOTPATH=$($GO list -m -f {{.Dir}} 2>/dev/null)
ROOTPATHPATTERN=$(echo $ROOTPATH | sed 's/\\/\\\\/g' | sed 's/\//\\\//g')
MODPATHS=$($GO list -m -f {{.Dir}} all 2>/dev/null | grep "^$ROOTPATHPATTERN"\
| sed -e "s/^$ROOTPATHPATTERN//" -e 's/^\\//' -e 's/^\///')
MODPATHS=". $MODPATHS"
for module in $MODPATHS; do
echo "==> ${module}"
env CC=gcc $GO test -short -tags rpctest ./${module}/...
# check linters
golangci-lint run --build-tags rpctest --disable-all --deadline=10m \
--enable=gofmt \
--enable=gosimple \
--enable=unconvert \
--enable=ineffassign \
--enable=govet \
--enable=misspell ./${module}/...
done
echo "------------------------------------------"
echo "Tests completed successfully!"
}
DOCKER=
[[ "$1" == "docker" || "$1" == "podman" ]] && DOCKER=$1
if [ ! "$DOCKER" ]; then
testrepo
exit
fi
# use Travis cache with docker
DOCKER_IMAGE_TAG=decred-golang-builder-$GOVERSION
$DOCKER pull decred/$DOCKER_IMAGE_TAG
$DOCKER run --rm -it -v $(pwd):/src:Z decred/$DOCKER_IMAGE_TAG /bin/bash -c "\
rsync -ra --filter=':- .gitignore' \
/src/ /go/src/github.com/decred/$REPO/ && \
cd github.com/decred/$REPO/ && \
env GOVERSION=$GOVERSION GO111MODULE=on bash run_tests.sh"