diff --git a/build/global.go b/build/global.go index b0491fe..01e278f 100644 --- a/build/global.go +++ b/build/global.go @@ -41,7 +41,15 @@ func Generate() { flag.Parse() } cfg := flags.Config() - os.Exit(Main(cfg, ctx)) + + status := Main(cfg, ctx) + + // To record coverage of integration tests we wrap main() functions in a test + // functions. In this case we need the main function to terminate, therefore we + // only exit for failure status codes. + if status != 0 { + os.Exit(status) + } } func GP8v() reg.GPVirtual { return ctx.GP8v() } diff --git a/script/covermain b/script/covermain new file mode 100755 index 0000000..b31a6a7 --- /dev/null +++ b/script/covermain @@ -0,0 +1,29 @@ +#!/bin/bash -e + +main=$1 +coverprofile=$2 + +# Temporary working directory. +workdir=$(mktemp -d) + +# Wrap the main function in a go test. +cp ${main} ${workdir} +cat > ${workdir}/main_test.go <