| | |
| | |
| | |
| |
|
| | package testing_test |
| |
|
| | import ( |
| | "internal/testenv" |
| | "os" |
| | "regexp" |
| | "strings" |
| | "testing" |
| | ) |
| |
|
| | func TestTBHelper(t *testing.T) { |
| | if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" { |
| | testTestHelper(t) |
| |
|
| | |
| | |
| | t.Helper() |
| | t.Error("8") |
| | return |
| | } |
| |
|
| | t.Parallel() |
| |
|
| | cmd := testenv.Command(t, testenv.Executable(t), "-test.run=^TestTBHelper$") |
| | cmd = testenv.CleanCmdEnv(cmd) |
| | cmd.Env = append(cmd.Env, "GO_WANT_HELPER_PROCESS=1") |
| | out, _ := cmd.CombinedOutput() |
| |
|
| | want := `--- FAIL: TestTBHelper \([^)]+\) |
| | helperfuncs_test.go:15: 0 |
| | helperfuncs_test.go:47: 1 |
| | helperfuncs_test.go:24: 2 |
| | helperfuncs_test.go:49: 3 |
| | helperfuncs_test.go:56: 4 |
| | --- FAIL: TestTBHelper/sub \([^)]+\) |
| | helperfuncs_test.go:59: 5 |
| | helperfuncs_test.go:24: 6 |
| | helperfuncs_test.go:58: 7 |
| | --- FAIL: TestTBHelper/sub2 \([^)]+\) |
| | helperfuncs_test.go:80: 11 |
| | helperfuncs_test.go:84: recover 12 |
| | helperfuncs_test.go:86: GenericFloat64 |
| | helperfuncs_test.go:87: GenericInt |
| | helper_test.go:22: 8 |
| | helperfuncs_test.go:73: 9 |
| | helperfuncs_test.go:69: 10 |
| | ` |
| | if !regexp.MustCompile(want).Match(out) { |
| | t.Errorf("got output:\n\n%s\nwant matching:\n\n%s", out, want) |
| | } |
| | } |
| |
|
| | func TestTBHelperParallel(t *testing.T) { |
| | if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" { |
| | parallelTestHelper(t) |
| | return |
| | } |
| |
|
| | t.Parallel() |
| |
|
| | cmd := testenv.Command(t, testenv.Executable(t), "-test.run=^TestTBHelperParallel$") |
| | cmd = testenv.CleanCmdEnv(cmd) |
| | cmd.Env = append(cmd.Env, "GO_WANT_HELPER_PROCESS=1") |
| | out, _ := cmd.CombinedOutput() |
| |
|
| | t.Logf("output:\n%s", out) |
| |
|
| | lines := strings.Split(strings.TrimSpace(string(out)), "\n") |
| |
|
| | |
| | |
| | |
| | const wantLines = 7 |
| |
|
| | if len(lines) != wantLines { |
| | t.Fatalf("parallelTestHelper gave %d lines of output; want %d", len(lines), wantLines) |
| | } |
| | want := "helperfuncs_test.go:24: parallel" |
| | if got := strings.TrimSpace(lines[1]); got != want { |
| | t.Errorf("got second output line %q; want %q", got, want) |
| | } |
| | } |
| |
|
| | func BenchmarkTBHelper(b *testing.B) { |
| | f1 := func() { |
| | b.Helper() |
| | } |
| | f2 := func() { |
| | b.Helper() |
| | } |
| | b.ResetTimer() |
| | b.ReportAllocs() |
| | for i := 0; i < b.N; i++ { |
| | if i&1 == 0 { |
| | f1() |
| | } else { |
| | f2() |
| | } |
| | } |
| | } |
| |
|