Skip to content

Commit

Permalink
Add end-to-end (e2e) tests
Browse files Browse the repository at this point in the history
  • Loading branch information
carolynvs-msft committed Jul 30, 2018
1 parent b92ac26 commit 0bbca34
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ before_script:
- buffalo db create
- buffalo db migrate up
script:
- make verify test-unit
- make verify test-unit test-e2e
after_success:
- if [ "${CODE_COV}" == "1" ]; then
curl -s https://codecov.io/bash -o codecov && bash codecov -X fix;
Expand Down
6 changes: 6 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,9 @@ as checking that the standard go formatting is applied, linting, etc.

## Unit Tests
Run `make test-unit` to run the unit tests.

## End-to-End Tests
End-to-End tests (e2e) are tests from the user perspective that validate that
everything works when running real live servers, and using `go` with GOPROXY set.

Run `make test-e2e` to run the end-to-end tests.
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ test:
test-unit:
./scripts/test_unit.sh

.PHONY: test-e2e
test-e2e:
./scripts/test_e2e.sh

.PHONY: olympus-docker
olympus-docker:
docker build -t gopackages/olympus -f cmd/olympus/Dockerfile .
Expand Down
53 changes: 53 additions & 0 deletions scripts/test_e2e.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/bin/bash

# test_e2e.sh
# Execute end-to-end (e2e) tests to verify that everything is working right
# from the end user perpsective
set -xeuo pipefail

REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )/.."

# Use a version of Go that supports Go Modules
export GO111MODULES=on
GOMOD_CACHE=$(go env GOPATH)/src/mod
GO_SOURCE=${GO_SOURCE:=$(go env GOPATH)/src/golang.org/x/go}
export GOROOT=${GO_SOURCE}
export PATH=${GO_SOURCE}/bin:${PATH}
go version

clearGoModCache () {
# The sudo is a necessary workaround until go is fixed
sudo rm -fr ${GOMOD_CACHE}
}

teardown () {
# Cleanup after our tests
pkill buffalo || true
popd 2> /dev/null || true
}
trap teardown EXIT

# Start the proxy in the background and wait for it to be ready
export GO_BINARY_PATH=${GO_SOURCE}/bin/go
cd $REPO_DIR/cmd/proxy
pkill buffalo || true # cleanup old buffalos
buffalo dev &
while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:3000)" != "200" ]]; do sleep 5; done

# Clone our test repo
TEST_SOURCE=${TMPDIR}go-depmgmt-testrepo
rm -fr ${TEST_SOURCE} 2> /dev/null || true
git clone https://github.com/carolynvs/go-depmgmt-testrepo.git ${TEST_SOURCE}
pushd ${TEST_SOURCE}

clearGoModCache

# Make sure that our test repo works without the GOPROXY first
unset GOPROXY
go run main.go

clearGoModCache

# Verify that the test works against the proxy
export GOPROXY=http://localhost:3000
go run main.go

0 comments on commit 0bbca34

Please sign in to comment.