blob: 221951163ef2936f76b93b35a4436344b7fd65a9 [file] [log] [blame]
version: 2.1
references:
images:
go: &GOLANG_IMAGE docker.mirror.hashicorp.services/circleci/golang:1.15.3
environments:
tmp: &TEST_RESULTS_PATH /tmp/test-results # path to where test results are saved
# reusable 'executor' object for jobs
executors:
go:
docker:
- image: *GOLANG_IMAGE
environment:
- TEST_RESULTS: *TEST_RESULTS_PATH
jobs:
go-test:
executor: go
steps:
- checkout
- run: mkdir -p $TEST_RESULTS
- restore_cache: # restore cache from dev-build job
keys:
- go-version-modcache-v1-{{ checksum "go.mod" }}
- run: go mod download
# Save go module cache if the go.mod file has changed
- save_cache:
key: go-version-modcache-v1-{{ checksum "go.mod" }}
paths:
- "/go/pkg/mod"
# check go fmt output because it does not report non-zero when there are fmt changes
- run:
name: check go fmt
command: |
files=$(go fmt ./...)
if [ -n "$files" ]; then
echo "The following file(s) do not conform to go fmt:"
echo "$files"
exit 1
fi
# run go tests with gotestsum
- run: |
PACKAGE_NAMES=$(go list ./...)
gotestsum --format=short-verbose --junitfile $TEST_RESULTS/gotestsum-report.xml -- $PACKAGE_NAMES
- store_test_results:
path: *TEST_RESULTS_PATH
- store_artifacts:
path: *TEST_RESULTS_PATH
workflows:
version: 2
test-and-build:
jobs:
- go-test