Last active
August 24, 2021 03:13
-
-
Save h12w/0f22736320abe6be71ce to your computer and use it in GitHub Desktop.
golcean.sh does automatic checking on a Go package and its sub-packages.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 . | tee /dev/stderr)" | |
go vet ./... | |
go test -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 underscors | |
for dir in $(find . -maxdepth 10 -not -path './.git*' -not -path '*/_*' -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 | |
go tool cover -func profile.cov | |
# To submit the test coverage result to coveralls.io, | |
# use goveralls (https://github.com/mattn/goveralls) | |
# goveralls -coverprofile=profile.cov -service=travis-ci |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks.
I have just noticed that there are no notifications about the comments on Gist, I have just moved the script to my Git repository: https://github.com/hailiang/gosweep (name changed from goclean to gosweep to avoid confusion with "go clean" command).