Update TravisCI to goclean script.
This commit causes TravisCI to run several tools on each pull request and commit to help ensure the code quality remains high. This includes gofmt, goimports, golint, go vet, the race detector, and coverage stats. Also, it instructs TravisCI to use nicer container-based builds.
This commit is contained in:
parent
0247ddff18
commit
642e3c741a
2 changed files with 52 additions and 1 deletions
15
.travis.yml
15
.travis.yml
|
@ -1,4 +1,17 @@
|
||||||
language: go
|
language: go
|
||||||
go:
|
go:
|
||||||
|
- go1.3
|
||||||
- release
|
- release
|
||||||
- tip
|
sudo: false
|
||||||
|
before_install:
|
||||||
|
- gotools=golang.org/x/tools
|
||||||
|
- if [ "$TRAVIS_GO_VERSION" = "release" ] || [ "$TRAVIS_GO_VERSION" = "go1.3.3" ]; then gotools=code.google.com/p/go.tools; fi
|
||||||
|
install:
|
||||||
|
- go get -d -t -v ./...
|
||||||
|
- go get -v $gotools/cmd/cover
|
||||||
|
- go get -v $gotools/cmd/vet
|
||||||
|
- go get -v github.com/bradfitz/goimports
|
||||||
|
- go get -v github.com/golang/lint/golint
|
||||||
|
script:
|
||||||
|
- export PATH=$PATH:$HOME/gopath/bin
|
||||||
|
- ./goclean.sh
|
||||||
|
|
38
goclean.sh
Executable file
38
goclean.sh
Executable file
|
@ -0,0 +1,38 @@
|
||||||
|
#!/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 -e
|
||||||
|
|
||||||
|
# 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" | grep -v "OP_" | tee /dev/stderr)
|
||||||
|
go vet ./...
|
||||||
|
env GORACE="halt_on_error=1" go test -v -race ./...
|
||||||
|
|
||||||
|
# Run test coverage on each subdirectories and merge the coverage profile.
|
||||||
|
|
||||||
|
echo "mode: count" > profile.cov
|
||||||
|
|
||||||
|
# Standard go tooling behavior is to ignore dirs with leading underscores.
|
||||||
|
for dir in $(/bin/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
|
Loading…
Reference in a new issue