integrations tests and coverage badge

This commit is contained in:
Ethan Buchman
2016-07-23 12:48:30 -04:00
parent eac43dc62b
commit cb6c3fb0b6
7 changed files with 97 additions and 1 deletions

View File

@@ -24,6 +24,9 @@ test: build
test_race: build
go test -race `${NOVENDOR}`
test_integrations:
bash ./test/test.sh
test100: build
for i in {1..100}; do make test; done

View File

@@ -2,6 +2,7 @@
Simple, Secure, Scalable Blockchain Platform
[![CircleCI](https://circleci.com/gh/tendermint/tendermint.svg?style=svg)](https://circleci.com/gh/tendermint/tendermint)
[![codecov](https://codecov.io/gh/tendermint/tendermint/branch/develop/graph/badge.svg)](https://codecov.io/gh/tendermint/tendermint)
_NOTE: This is yet pre-alpha non-production-quality software._

View File

@@ -16,8 +16,15 @@ checkout:
dependencies:
override:
- sudo curl -sSL -o /usr/bin/docker http://s3-external-1.amazonaws.com/circle-downloads/docker-1.9.1-circleci; sudo chmod 0755 /usr/bin/docker
- sudo service docker start
- go version
- docker version
- "cd $REPO && make get_vendor_deps"
test:
override:
- "cd $REPO && make test_race"
- "cd $REPO && make test_integrations"
post:
- bash <(curl -s https://codecov.io/bash)

2
glide.lock generated
View File

@@ -80,7 +80,7 @@ imports:
- name: github.com/tendermint/go-wire
version: 3b0adbc86ed8425eaed98516165b6788d9f4de7a
- name: github.com/tendermint/log15
version: 6e460758f10ef42a4724b8e4a82fee59aaa0e41d
version: 9545b249b3aacafa97f79e0838b02b274adc6f5f
subpackages:
- term
- name: github.com/tendermint/tmsp

8
test/Dockerfile Normal file
View File

@@ -0,0 +1,8 @@
# Pull base image.
FROM golang:1.5
COPY test/test_libs.sh /
COPY glide.lock /glide.lock
ENV GLIDE /glide.lock

14
test/test.sh Normal file
View File

@@ -0,0 +1,14 @@
#! /bin/bash
# integrations test!
# if we pushed to STAGING or MASTER,
# run the integrations tests.
BRANCH=`git rev-parse --abbrev-ref HEAD`
echo "Current branch: $BRANCH"
if [[ "$BRANCH" == "master" || "$BRANCH" == "staging" ]]; then
docker build -t tester -f ./test/Dockerfile .
docker run -t tester bash /test_libs.sh
fi

63
test/test_libs.sh Normal file
View File

@@ -0,0 +1,63 @@
#! /bin/bash
# set glide.lock path
if [[ "$GLIDE" == "" ]]; then
GLIDE=$GOPATH/src/github.com/tendermint/tendermint/glide.lock
fi
# get vendored commit for given lib
function parseGlide() {
cat $1 | grep -A1 $2 | grep -v $2 | awk '{print $2}'
}
# fetch and checkout vendored dep
function getDep() {
lib=$1
echo "----------------------------------"
echo "Getting $lib ..."
go get -t github.com/tendermint/$lib/...
VENDORED=$(parseGlide $GLIDE $lib)
cd $GOPATH/src/github.com/tendermint/$lib
MASTER=$(git rev-parse origin/master)
if [[ "$VENDORED" != "$MASTER" ]]; then
echo "... VENDORED != MASTER ($VENDORED != $MASTER)"
echo "... Checking out commit $VENDORED"
git checkout $VENDORED &> /dev/null
fi
}
####################
# libs we depend on
####################
LIBS_GO_TEST=(go-clist go-common go-config go-crypto go-db go-events go-merkle go-p2p)
LIBS_MAKE_TEST=(go-rpc go-wire tmsp)
for lib in "${LIBS_GO_TEST[@]}"; do
getDep $lib
echo "Testing $lib ..."
go test --race github.com/tendermint/$lib/...
if [[ "$?" != 0 ]]; then
echo "FAIL"
exit 1
fi
done
for lib in "${LIBS_MAKE_TEST[@]}"; do
getDep $lib
echo "Testing $lib ..."
cd $GOPATH/src/github.com/tendermint/$lib
make test
if [[ "$?" != 0 ]]; then
echo "FAIL"
exit 1
fi
done
echo ""
echo "PASS"