efa50e6abc
This simplifies the code based on the recommendations of the gosimple lint tool. Also, it increases the deadline for the linters to run to 10 minutes and reduces the number of threads that is uses. This is being done because the Travis environment has become increasingly slower and it also seems to be hampered by too many threads running concurrently.
64 lines
2 KiB
Bash
Executable file
64 lines
2 KiB
Bash
Executable file
#!/bin/bash
|
|
# The script does automatic checking on a Go package and its sub-packages, including:
|
|
# 1. gofmt (http://golang.org/cmd/gofmt/)
|
|
# 2. golint (https://github.com/golang/lint)
|
|
# 3. go vet (http://golang.org/cmd/vet)
|
|
# 4. gosimple (https://github.com/dominikh/go-simple)
|
|
# 5. unconvert (https://github.com/mdempsky/unconvert)
|
|
# 6. race detector (http://blog.golang.org/race-detector)
|
|
# 7. test coverage (http://blog.golang.org/cover)
|
|
#
|
|
# gometalinter (github.com/alecthomas/gometalinter) is used to run each static
|
|
# checker.
|
|
|
|
set -ex
|
|
|
|
# Make sure glide is installed and $GOPATH/bin is in your path.
|
|
# $ go get -u github.com/Masterminds/glide
|
|
# $ glide install
|
|
if [ ! -x "$(type -p glide)" ]; then
|
|
exit 1
|
|
fi
|
|
|
|
# Make sure gometalinter is installed and $GOPATH/bin is in your path.
|
|
# $ go get -v github.com/alecthomas/gometalinter"
|
|
# $ gometalinter --install"
|
|
if [ ! -x "$(type -p gometalinter)" ]; then
|
|
exit 1
|
|
fi
|
|
|
|
linter_targets=$(glide novendor)
|
|
|
|
# Automatic checks
|
|
test -z "$(gometalinter -j 4 --disable-all \
|
|
--enable=gofmt \
|
|
--enable=golint \
|
|
--enable=vet \
|
|
--enable=gosimple \
|
|
--enable=unconvert \
|
|
--deadline=10m $linter_targets 2>&1 | grep -v 'ALL_CAPS\|OP_' 2>&1 | tee /dev/stderr)"
|
|
env GORACE="halt_on_error=1" go test -race -tags rpctest $linter_targets
|
|
|
|
# Run test coverage on each subdirectories and merge the coverage profile.
|
|
|
|
set +x
|
|
echo "mode: count" > profile.cov
|
|
|
|
# Standard go tooling behavior is to ignore dirs with leading underscores.
|
|
for dir in $(find . -maxdepth 10 -not -path '.' -not -path './.git*' \
|
|
-not -path './.glide*' -not -path '*/_*' -not -path './cmd*' \
|
|
-not -path './release*' -not -path './vendor*' -type d)
|
|
do
|
|
if ls $dir/*.go &> /dev/null; then
|
|
go test -covermode=count -coverprofile=$dir/profile.tmp $dir
|
|
if [ -f $dir/profile.tmp ]; then
|
|
cat $dir/profile.tmp | tail -n +2 >> profile.cov
|
|
rm $dir/profile.tmp
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# To submit the test coverage result to coveralls.io,
|
|
# use goveralls (https://github.com/mattn/goveralls)
|
|
# goveralls -coverprofile=profile.cov -service=travis-ci
|