From 7b9c4fa09c887376d1c44696e2bdd56ec3b6fd39 Mon Sep 17 00:00:00 2001 From: David Hill Date: Thu, 12 Oct 2017 15:24:04 -0400 Subject: [PATCH] tests: make lockfile test work locally (#894) --- run_tests.sh | 65 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 24 deletions(-) diff --git a/run_tests.sh b/run_tests.sh index f6e1a4ed..41d32053 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -19,47 +19,64 @@ set -ex #Default GOVERSION GOVERSION=${1:-1.9} REPO=dcrd +DOCKER_IMAGE_TAG=decred-golang-builder-$GOVERSION -TESTDIRS=$(go list ./... | grep -v '/vendor/') -TESTCMD="test -z \"\$(gometalinter --vendor --disable-all \ - --enable=gofmt \ - --enable=vet \ - --enable=unconvert \ - --deadline=10m ./... 2>&1 | tee /dev/stderr)\"&& \ - env GORACE='halt_on_error=1' go test -short -race \ - -tags rpctest \ - \${TESTDIRS}" +testrepo () { + TESTDIRS=$(go list ./... | grep -v '/vendor/') + TMPFILE=$(mktemp) + + # Check lockfile + cp Gopkg.lock $TMPFILE && dep ensure && diff Gopkg.lock $TMPFILE >/dev/null + if [ $? != 0 ]; then + echo 'lockfile must be updated with dep ensure' + exit 1 + fi + + # Check linters + gometalinter --vendor --disable-all --deadline=10m \ + --enable=gofmt \ + --enable=vet \ + --enable=unconvert ./... | tee /dev/stderr + if [ $? != 0 ]; then + echo 'gometalinter has some complaints' + exit 1 + fi + + # Test application install + go install . ./cmd/... + if [ $? != 0 ]; then + echo 'go install failed' + exit 1 + fi + + # Check tests + env GORACE='halt_on_error=1' go test -short -race -tags rpctest $TESTDIRS + if [ $? != 0 ]; then + echo 'go tests failed' + exit 1 + fi + + echo "------------------------------------------" + echo "Tests completed successfully!" +} if [ $GOVERSION == "local" ]; then - go get -v github.com/alecthomas/gometalinter; gometalinter --install - eval $TESTCMD + testrepo exit fi -DOCKER_IMAGE_TAG=decred-golang-builder-$GOVERSION - docker pull decred/$DOCKER_IMAGE_TAG if [ $? != 0 ]; then echo 'docker pull failed' exit 1 fi -TMPFILE=$(mktemp) docker run --rm -it -v $(pwd):/src decred/$DOCKER_IMAGE_TAG /bin/bash -c "\ rsync -ra --filter=':- .gitignore' \ /src/ /go/src/github.com/decred/$REPO/ && \ cd github.com/decred/$REPO/ && \ - cp Gopkg.lock $TMPFILE && \ - dep ensure && \ - diff Gopkg.lock $TMPFILE >/dev/null || (echo 'lockfile must be updated with dep ensure'; exit 1) && \ - go install . ./cmd/... && \ - $TESTCMD -" - + bash run_tests.sh local" if [ $? != 0 ]; then echo 'docker run failed' exit 1 fi - -echo "------------------------------------------" -echo "Tests complete."