forked from gomods/athens
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_e2e.sh
executable file
·69 lines (55 loc) · 2 KB
/
test_e2e.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/bash
# test_e2e.sh
# Execute end-to-end (e2e) tests to verify that everything is working right
# from the end user perspective
set -xeuo pipefail
REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )/.."
OGOPATH=${GOPATH:-}
OGO111MODULE=${GO111MODULE:-}
OGOPROXY=${GOPROXY:-}
export GO_BINARY_PATH=${GO_BINARY_PATH:-go}
TMPDIR=$(mktemp -d)
export GOPATH=$TMPDIR
GOMOD_CACHE=$TMPDIR/pkg/mod
export PATH=${REPO_DIR}/bin:${PATH}
clearGoModCache () {
chmod -R 0770 ${GOMOD_CACHE}
rm -fr ${GOMOD_CACHE}
}
teardown () {
# Cleanup after our tests
[[ -z "${OGOPATH}" ]] && unset GOPATH || export GOPATH=$OGOPATH
[[ -z "${OGO111MODULE}" ]] && unset GO111MODULE || export GO111MODULE=$OGO111MODULE
[[ -z "${OGOPROXY}" ]] && unset GOPROXY || export GOPROXY=$OGOPROXY
clearGoModCache
pkill athens-proxy || true
rm $REPO_DIR/cmd/proxy/athens-proxy || true
rm -fr ${TMPDIR}
popd 2> /dev/null || true
}
trap teardown EXIT
export GO111MODULE=on
# Start the proxy in the background and wait for it to be ready
cd $REPO_DIR/cmd/proxy
pkill athens-proxy || true # cleanup proxy if it is running
go build -o athens-proxy && ./athens-proxy &
while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:3000/readyz)" != "200" ]]; do sleep 1; done
# Clone our test repo
TEST_SOURCE=${TMPDIR}/happy-path
rm -fr ${TEST_SOURCE} 2> /dev/null || true
git clone https://github.com/athens-artifacts/happy-path.git ${TEST_SOURCE}
pushd ${TEST_SOURCE}
# Make sure that our test repo works without the GOPROXY first
unset GOPROXY
$GO_BINARY_PATH run .
# clear cache so that go uses the proxy
clearGoModCache
# Verify that the test works against the proxy
export GOPROXY=http://localhost:3000
$GO_BINARY_PATH run .
CATALOG_RES=$(curl localhost:3000/catalog)
CATALOG_EXPECTED='{"modules":[{"module":"github.com/athens-artifacts/no-tags","version":"v0.0.0-20180803171426-1a540c5d67ab"}]}'
if [[ "$CATALOG_RES" != "$CATALOG_EXPECTED" ]]; then
echo ERROR: catalog endpoint failed
exit 1 # terminate and indicate error
fi