|
|
@@ -6,6 +6,7 @@
|
|
|
package testenv
|
|
|
|
|
|
import (
|
|
|
+ "context"
|
|
|
"flag"
|
|
|
|
|
|
"tailscale.com/types/lazy"
|
|
|
@@ -19,3 +20,41 @@ func InTest() bool {
|
|
|
return flag.Lookup("test.v") != nil
|
|
|
})
|
|
|
}
|
|
|
+
|
|
|
+// TB is testing.TB, to avoid importing "testing" in non-test code.
|
|
|
+type TB interface {
|
|
|
+ Cleanup(func())
|
|
|
+ Error(args ...any)
|
|
|
+ Errorf(format string, args ...any)
|
|
|
+ Fail()
|
|
|
+ FailNow()
|
|
|
+ Failed() bool
|
|
|
+ Fatal(args ...any)
|
|
|
+ Fatalf(format string, args ...any)
|
|
|
+ Helper()
|
|
|
+ Log(args ...any)
|
|
|
+ Logf(format string, args ...any)
|
|
|
+ Name() string
|
|
|
+ Setenv(key, value string)
|
|
|
+ Chdir(dir string)
|
|
|
+ Skip(args ...any)
|
|
|
+ SkipNow()
|
|
|
+ Skipf(format string, args ...any)
|
|
|
+ Skipped() bool
|
|
|
+ TempDir() string
|
|
|
+ Context() context.Context
|
|
|
+}
|
|
|
+
|
|
|
+// InParallelTest reports whether t is running as a parallel test.
|
|
|
+//
|
|
|
+// Use of this function taints t such that its Parallel method (assuming t is an
|
|
|
+// actual *testing.T) will panic if called after this function.
|
|
|
+func InParallelTest(t TB) (isParallel bool) {
|
|
|
+ defer func() {
|
|
|
+ if r := recover(); r != nil {
|
|
|
+ isParallel = true
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ t.Chdir(".") // panics in a t.Parallel test
|
|
|
+ return false
|
|
|
+}
|