@@ -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() }
|
||||
|
||||
29
script/covermain
Executable file
29
script/covermain
Executable file
@@ -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 <<EOF
|
||||
package main
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestRunMain(t *testing.T) {
|
||||
main()
|
||||
}
|
||||
EOF
|
||||
|
||||
# Execute the test with coverage.
|
||||
testbin="${workdir}/testbin"
|
||||
output="${workdir}/cover.out"
|
||||
go test -o ${testbin} -covermode=count -coverpkg="github.com/mmcloughlin/avo/..." ${workdir}/*.go
|
||||
${testbin} -test.coverprofile=${output}
|
||||
cp ${output} ${coverprofile}
|
||||
|
||||
# Cleanup.
|
||||
rm -rf ${workdir}
|
||||
Reference in New Issue
Block a user