* Update CI Go version to 1.20/1.19 * Update `golangci-lint` to v1.51.2 * Update coverage collection to use new Go 1.20 tools * Update coverage job to only run on latest Go version Fixes #367
46 lines
1.0 KiB
Bash
Executable File
46 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
ext=".coverprofile"
|
|
|
|
# Temporary working directory.
|
|
workdir=$(mktemp -d)
|
|
|
|
function cleanup() {
|
|
rm -rf "${workdir}"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
# Clean existing coverage files.
|
|
find . -name '*'${ext} | xargs rm -f
|
|
|
|
# Unit test coverage.
|
|
go test -covermode=count -coverprofile=unittests${ext} ./...
|
|
|
|
# Integration test coverage.
|
|
#
|
|
# Collect for each individual avo assembly generator.
|
|
coverbase="${workdir}/cover"
|
|
coversingle="${coverbase}/test"
|
|
mkdir -p "${coversingle}"
|
|
|
|
coverdirs=()
|
|
for main in $(find . -name 'asm.go'); do
|
|
dir=$(dirname ${main})
|
|
name=$(basename ${dir})
|
|
|
|
coverdir="${coversingle}/${name}"
|
|
mkdir "${coverdir}"
|
|
GOCOVERDIR="${coverdir}" go run -tags=integration -cover "${main}" -out /dev/null
|
|
|
|
coverdirs+=("${coverdir}")
|
|
done
|
|
|
|
# Merge integration test coverage.
|
|
covermergeinputs=$(IFS=","; echo "${coverdirs[*]}")
|
|
covermergeoutput="${coverbase}/merge"
|
|
mkdir "${covermergeoutput}"
|
|
go tool covdata merge -i="${covermergeinputs}" -o="${covermergeoutput}"
|
|
go tool covdata textfmt -i="${covermergeoutput}" -o="integration${ext}"
|