e6d5c163d5
Also, modify the goclean.sh script to quote the test command arguments and update the vet test to exclude recent false positives.
39 lines
1.5 KiB
Bash
Executable file
39 lines
1.5 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. goimports (https://github.com/bradfitz/goimports)
|
|
# 3. golint (https://github.com/golang/lint)
|
|
# 4. go vet (http://golang.org/cmd/vet)
|
|
# 5. race detector (http://blog.golang.org/race-detector)
|
|
# 6. test coverage (http://blog.golang.org/cover)
|
|
|
|
set -ex
|
|
|
|
# Automatic checks
|
|
test -z "$(gofmt -l -w . | tee /dev/stderr)"
|
|
test -z "$(goimports -l -w . | tee /dev/stderr)"
|
|
test -z "$(golint ./... | grep -v 'ALL_CAPS\|OP_\|NewFieldVal\|Id\|RpcCommand\|RpcRawCommand\|RpcSend\|Dns' | tee /dev/stderr)"
|
|
test -z "$(go tool vet . 2>&1 | grep -v 'Example\|newestSha' | tee /dev/stderr)"
|
|
env GORACE="halt_on_error=1" go test -v -race ./...
|
|
|
|
# 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 '*/_*' -not -path './cmd*' -not -path './release*' -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
|