Skip to content

Commit 8c6ad0c

Browse files
authored
ci: run Go tests during build (#161)
* Enable build failures on lint failures, since the problems have now been resolved * Install Go and run automated tests during build
1 parent 8bfff39 commit 8c6ad0c

File tree

2 files changed

+68
-6
lines changed

2 files changed

+68
-6
lines changed

.github/workflows/build.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,23 @@ jobs:
3838

3939
- name: Lint Helm Chart
4040
run: make lint/helm
41-
# TODO(jawnsy): fix linter warnings and remove this
42-
continue-on-error: true
4341

4442
- name: Check formatting and docs
45-
if: always()
4643
run: ./scripts/fmt.sh
4744

4845
- name: Lint Shell Scripts
49-
if: always()
5046
run: make lint/shellcheck
5147

5248
- name: Lint Kubernetes Templates
53-
if: always()
5449
run: make lint/kubernetes
5550

51+
- name: Install Go
52+
uses: actions/setup-go@v2
53+
with:
54+
go-version: '^1.17'
55+
56+
- name: Unit tests
57+
run: ./scripts/test_go.sh
58+
5659
- name: Package Helm Chart
57-
if: always()
5860
run: ./scripts/package.sh

scripts/test_go.sh

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#!/usr/bin/env bash
2+
#
3+
# Run Go-based unit tests
4+
5+
set -o errexit
6+
set -o nounset
7+
set -o pipefail
8+
9+
CI=${CI:-""}
10+
PROJECT_ROOT=$(git rev-parse --show-toplevel)
11+
# shellcheck source=lib.sh
12+
source "$PROJECT_ROOT/scripts/lib.sh"
13+
14+
echo "--- Running go test"
15+
export FORCE_COLOR=true
16+
17+
test_args=(
18+
-v
19+
-failfast
20+
"${TEST_ARGS:-}"
21+
)
22+
23+
REPORTDIR="/tmp/testreports"
24+
mkdir -p "$REPORTDIR"
25+
TESTREPORT_JSON="$REPORTDIR/test_go.json"
26+
TESTREPORT_XML="$REPORTDIR/test_go.xml"
27+
COVERAGE="$REPORTDIR/test_go.coverage"
28+
29+
test_args+=(
30+
"-covermode=set"
31+
"-coverprofile=$COVERAGE"
32+
)
33+
34+
declare test_status=0
35+
36+
pushd "$PROJECT_ROOT/tests" >/dev/null 2>&1
37+
# Allow failures to ensure that we can report on slow tests
38+
set +o errexit
39+
40+
run_trace false gotestsum \
41+
--debug \
42+
--jsonfile="$TESTREPORT_JSON" \
43+
--junitfile="$TESTREPORT_XML" \
44+
--hide-summary=skipped \
45+
--packages="./..." \
46+
-- "${test_args[@]}"
47+
test_status=$?
48+
49+
# Re-enable failures if steps fail
50+
set -o errexit
51+
popd >/dev/null 2>&1
52+
53+
# These unit tests should all be fast, so this report should be empty
54+
threshold="5s"
55+
echo "--- ಠ_ಠ The following tests took longer than $threshold to complete:"
56+
run_trace false gotestsum tool slowest \
57+
--jsonfile="$TESTREPORT_JSON" \
58+
--threshold="$threshold"
59+
60+
exit "$test_status"

0 commit comments

Comments
 (0)