dcrd/run_tests.sh
Dave Collins a3a3638255
travis: Allow staged builds with build cache.
This updates the tests to ensure all modules are downloaded prior to
running the linter.  This is necessary in order to support the travis
build cache with staged builds on all platforms.
2019-07-22 12:02:12 -05:00

53 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
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.
REPO=dcrd
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)
ROOTPATHPATTERN=$(echo $ROOTPATH | sed 's/\\/\\\\/g' | sed 's/\//\\\//g')
MODPATHS=$(go list -m all | grep "^$ROOTPATHPATTERN" | cut -d' ' -f1)
for module in $MODPATHS; do
echo "==> ${module}"
env CC=gcc go test -short -tags rpctest ${module}/...
# check linters
MODNAME=$(echo $module | sed -E -e "s/^$ROOTPATHPATTERN//" \
-e 's,^/,,' -e 's,/v[0-9]+$,,')
if [ -z "$MODNAME" ]; then
MODNAME=.
fi
(cd $MODNAME && \
go mod download && \
golangci-lint run --build-tags=rpctest --disable-all --deadline=10m \
--enable=gofmt \
--enable=gosimple \
--enable=unconvert \
--enable=ineffassign \
--enable=govet \
--enable=misspell \
)
done
echo "------------------------------------------"
echo "Tests completed successfully!"