From cf76c56dfce28731b2e66cd9527ff65326aa2a73 Mon Sep 17 00:00:00 2001 From: Michael McLoughlin Date: Wed, 2 Jan 2019 20:04:45 -0800 Subject: [PATCH] testing: script to measure coverage of a binary Updates #27 --- build/global.go | 10 +++++++++- script/covermain | 29 +++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100755 script/covermain 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 <