package testutils | |
import ( | |
"testing" | |
"time" | |
) | |
// Timeout calls f and waits for 100ms for it to complete. | |
// If it doesn't, it causes the tests to fail. | |
// t must be a valid testing context. | |
func Timeout(t *testing.T, f func()) { | |
onTimeout := time.After(100 * time.Millisecond) | |
onDone := make(chan bool) | |
go func() { | |
f() | |
close(onDone) | |
}() | |
select { | |
case <-onTimeout: | |
t.Fatalf("timeout") | |
case <-onDone: | |
} | |
} |