2554caee59
This converts the project to allow btcd to be used with the glide package manager in order to provide stable and reproducible builds without the user having to jump through all of the hoops as they do today. It consists of adding a glide.yaml file which identifies the project dependencies and locations along with a glide.lock file which contains the complete dependency tree pinned to specific versions. Glide uses these files to download the packages (or updates) to a local vendor directory and checkout the correct pinned versions. The go tool, in turn, is used to build/install btcd and will use the pinned versions in the vendor directory. This also updates TravisCI to build using glide, removes some of the exceptions in the lint checks which are no longer required, and updates the README.md with the new instructions needed to build the project with glide.
38 lines
1.4 KiB
Bash
Executable file
38 lines
1.4 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. race detector (http://blog.golang.org/race-detector)
|
|
# 5. test coverage (http://blog.golang.org/cover)
|
|
|
|
set -ex
|
|
|
|
# Automatic checks
|
|
test -z "$(go fmt $(glide novendor) | tee /dev/stderr)"
|
|
test -z "$(for package in $(glide novendor); do golint $package; done | grep -v 'ALL_CAPS\|OP_\|NewFieldVal' | tee /dev/stderr)"
|
|
test -z "$(go vet $(glide novendor) 2>&1 | tee /dev/stderr)"
|
|
env GORACE="halt_on_error=1" go test -v -race $(glide novendor)
|
|
|
|
# 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*' \
|
|
-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
|