Change tstest's exported functions (AssertNotParallel, Replace, Parallel, RequireRoot, SkipOnKernelVersions, MinAllocsPerRun, FixLogs, UnfixLogs, CheckIsZero, ResourceCheck) to take testenv.TB instead of testing.TB or *testing.T, so importing tstest from non-test code no longer links the testing package and its flag registration side effects into the binary. Add testenv.Verbose to replace the one use of testing.Verbose, and a deptest check to keep testing out of tstest's dependency graph. Callers are unaffected: *testing.T and testing.TB both satisfy testenv.TB. Updates tailscale/corp#45223 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com> Change-Id: Ib373ff66ceff638d071582baf8367245987e9155
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
// Copyright (c) Tailscale Inc & contributors
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
package tstest
|
|
|
|
import (
|
|
"runtime"
|
|
"testing"
|
|
|
|
"tailscale.com/tstest/deptest"
|
|
)
|
|
|
|
func TestDeps(t *testing.T) {
|
|
deptest.DepChecker{
|
|
BadDeps: map[string]string{
|
|
"testing": "do not link the testing package and its flag side effects into non-test binaries; use testenv.TB",
|
|
},
|
|
}.Check(t)
|
|
}
|
|
|
|
func TestReplace(t *testing.T) {
|
|
before := "before"
|
|
done := false
|
|
t.Run("replace", func(t *testing.T) {
|
|
Replace(t, &before, "after")
|
|
if before != "after" {
|
|
t.Errorf("before = %q; want %q", before, "after")
|
|
}
|
|
done = true
|
|
})
|
|
if !done {
|
|
t.Fatal("subtest didn't run")
|
|
}
|
|
if before != "before" {
|
|
t.Errorf("before = %q; want %q", before, "before")
|
|
}
|
|
}
|
|
|
|
func TestKernelVersion(t *testing.T) {
|
|
switch runtime.GOOS {
|
|
case "linux":
|
|
default:
|
|
t.Skipf("skipping test on %s", runtime.GOOS)
|
|
}
|
|
|
|
major, minor, patch := KernelVersion()
|
|
if major == 0 && minor == 0 && patch == 0 {
|
|
t.Fatal("KernelVersion returned (0, 0, 0); expected valid version")
|
|
}
|
|
t.Logf("Kernel version: %d.%d.%d", major, minor, patch)
|
|
}
|