Files
avo/script/coverage
Michael McLoughlin 1bba0bed7f ci: bump to go 1.20 (#375)
* 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
2023-03-05 14:22:23 -08:00

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}"