mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-28 17:02:32 +00:00

The most recent version of glide creates a working directory named .glide that includes .go files and thus must be excluded from the find operation that generates merged test coverage of all packages.
64 lines
2.0 KiB
Bash
Executable File
64 lines
2.0 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 --disable-all \
|
|
--enable=gofmt \
|
|
--enable=golint \
|
|
--enable=vet \
|
|
--enable=gosimple \
|
|
--enable=unconvert \
|
|
--deadline=4m $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
|