zrepl/platformtest/harness/harness_test.go

45 lines
980 B
Go

package main
import (
"os"
"strings"
"testing"
)
// Idea taken from
// https://github.com/openSUSE/umoci/blob/v0.2.1/cmd/umoci/main_test.go
//
// How to generate coverage:
// go test -c -covermode=atomic -cover -coverpkg github.com/zrepl/zrepl/...
// sudo ../logmockzfs/logzfsenv /tmp/zrepl_platform_test.log /usr/bin/zfs \
// ./harness.test -test.coverprofile=/tmp/harness.out \
// -test.v __DEVEL--i-heard-you-like-tests \
// -root rpool/zreplplayground
// go tool cover -html=/tmp/harness.out -o /tmp/harness.html
//
// Merge with existing coverage reports using gocovmerge:
// https://github.com/wadey/gocovmerge
func TestMain(t *testing.T) {
var (
args []string
run bool
)
for _, arg := range os.Args {
switch {
case arg == "__DEVEL--i-heard-you-like-tests":
run = true
case strings.HasPrefix(arg, "-test"):
case strings.HasPrefix(arg, "__DEVEL"):
default:
args = append(args, arg)
}
}
os.Args = args
if run {
main()
}
}