diff --git a/.travis.yml b/.travis.yml index 167d6ad74..6e29702ef 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,19 +3,24 @@ language: python # http://docs.travis-ci.com/user/ci-environment/#CI-environment-OS before_install: travis_retry sudo ./bootstrap/ubuntu.sh -install: "travis_retry pip install tox coveralls" -script: "travis_retry tox" - -after_success: '[ "$TOXENV" == "cover" ] && coveralls' - # using separate envs with different TOXENVs creates 4x1 Travis build # matrix, which allows us to clearly distinguish which component under # test has failed env: - - TOXENV=py26 - - TOXENV=py27 - - TOXENV=lint - - TOXENV=cover + global: + - GOPATH=/tmp/go + matrix: + - TOXENV=py26 + - TOXENV=py27 + - TOXENV=lint + - TOXENV=cover + +install: "travis_retry pip install tox coveralls" +before_script: '[ "${TOXENV:0:2}" != "py" ] || ./tests/boulder-start.sh' +# TODO: eliminate substring slice bashism +script: 'travis_retry tox && ([ "${TOXENV:0:2}" != "py" ] || (source .tox/$TOXENV/bin/activate && ./tests/boulder-integration.sh))' + +after_success: '[ "$TOXENV" == "cover" ] && coveralls' notifications: email: false diff --git a/tests/boulder-integration.sh b/tests/boulder-integration.sh new file mode 100755 index 000000000..adb6ab528 --- /dev/null +++ b/tests/boulder-integration.sh @@ -0,0 +1,22 @@ +#!/bin/sh -xe +# Simple integration test, make sure to activate virtualenv beforehand +# (source venv/bin/activate) and that you are running Boulder test +# instance (see ./boulder-start.sh). + +root="$(mktemp -d)" +echo "\nRoot integration tests directory: $root" + +# first three flags required, rest is handy defaults +letsencrypt \ + --server http://localhost:4000/acme/new-reg \ + --no-verify-ssl \ + --dvsni-port 5001 \ + --config-dir "$root/conf" \ + --work-dir "$root/work" \ + --text \ + --agree-eula \ + --email "" \ + --domains le.wtf \ + --authenticator standalone \ + -vvvvvvv \ + auth diff --git a/tests/boulder-start.sh b/tests/boulder-start.sh new file mode 100755 index 000000000..49139ff3c --- /dev/null +++ b/tests/boulder-start.sh @@ -0,0 +1,15 @@ +#!/bin/sh -xe +# Download and run Boulder instance for integration testing + +export GOPATH="${GOPATH:-/tmp/go}" + +# $ go get github.com/letsencrypt/boulder +# package github.com/letsencrypt/boulder +# imports github.com/letsencrypt/boulder +# imports github.com/letsencrypt/boulder: no buildable Go source files in /tmp/go/src/github.com/letsencrypt/boulder + +go get -d github.com/letsencrypt/boulder/cmd/boulder +cd $GOPATH/src/github.com/letsencrypt/boulder +make -j4 # Travis has 2 cores per build instance. +./start.sh & +# Hopefully start.sh bootstraps before integration test is started...