From 733122c7cdff477f797fd8fd92524665a80b0852 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Fri, 27 Mar 2026 16:13:26 -0400 Subject: runtime/race: use subtests for TestOutput For #78394. Change-Id: I4ef1a299f37e2b6532e2008378aca3aa6a6a6964 Reviewed-on: https://go-review.googlesource.com/c/go/+/760308 Reviewed-by: Cherry Mui LUCI-TryBot-Result: Go LUCI Auto-Submit: Michael Pratt --- src/runtime/race/output_test.go | 106 ++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 53 deletions(-) (limited to 'src/runtime') diff --git a/src/runtime/race/output_test.go b/src/runtime/race/output_test.go index 0d5c9096f0..94ac7f0963 100644 --- a/src/runtime/race/output_test.go +++ b/src/runtime/race/output_test.go @@ -26,63 +26,63 @@ func TestOutput(t *testing.T) { } for _, test := range tests { - if test.goos != "" && test.goos != runtime.GOOS { - t.Logf("test %v runs only on %v, skipping: ", test.name, test.goos) - continue - } - dir := t.TempDir() - source := "main.go" - if test.run == "test" { - source = "main_test.go" - } - src := filepath.Join(dir, source) - f, err := os.Create(src) - if err != nil { - t.Fatalf("failed to create file: %v", err) - } - _, err = f.WriteString(test.source) - if err != nil { - f.Close() - t.Fatalf("failed to write: %v", err) - } - if err := f.Close(); err != nil { - t.Fatalf("failed to close file: %v", err) - } - - cmd := exec.Command(testenv.GoToolPath(t), test.run, "-race", "-pkgdir="+pkgdir, src) - // GODEBUG spoils program output, GOMAXPROCS makes it flaky. - for _, env := range os.Environ() { - if strings.HasPrefix(env, "GODEBUG=") || - strings.HasPrefix(env, "GOMAXPROCS=") || - strings.HasPrefix(env, "GORACE=") { - continue + t.Run(test.name, func(t *testing.T) { + if test.goos != "" && test.goos != runtime.GOOS { + t.Skipf("runs only on %v", test.goos) } - cmd.Env = append(cmd.Env, env) - } - cmd.Env = append(cmd.Env, - "GOMAXPROCS=1", // see comment in race_test.go - "GORACE="+test.gorace, - ) - got, _ := cmd.CombinedOutput() - matched := false - for _, re := range test.re { - if regexp.MustCompile(re).MatchString(string(got)) { - matched = true - break + dir := t.TempDir() + source := "main.go" + if test.run == "test" { + source = "main_test.go" } - } - if !matched { - exp := fmt.Sprintf("expect:\n%v\n", test.re[0]) - if len(test.re) > 1 { - exp = fmt.Sprintf("expected one of %d patterns:\n", - len(test.re)) - for k, re := range test.re { - exp += fmt.Sprintf("pattern %d:\n%v\n", k, re) + src := filepath.Join(dir, source) + f, err := os.Create(src) + if err != nil { + t.Fatalf("failed to create file: %v", err) + } + _, err = f.WriteString(test.source) + if err != nil { + f.Close() + t.Fatalf("failed to write: %v", err) + } + if err := f.Close(); err != nil { + t.Fatalf("failed to close file: %v", err) + } + + cmd := exec.Command(testenv.GoToolPath(t), test.run, "-race", "-pkgdir="+pkgdir, src) + // GODEBUG spoils program output, GOMAXPROCS makes it flaky. + for _, env := range os.Environ() { + if strings.HasPrefix(env, "GODEBUG=") || + strings.HasPrefix(env, "GOMAXPROCS=") || + strings.HasPrefix(env, "GORACE=") { + continue + } + cmd.Env = append(cmd.Env, env) + } + cmd.Env = append(cmd.Env, + "GOMAXPROCS=1", // see comment in race_test.go + "GORACE="+test.gorace, + ) + got, _ := cmd.CombinedOutput() + matched := false + for _, re := range test.re { + if regexp.MustCompile(re).MatchString(string(got)) { + matched = true + break + } + } + if !matched { + exp := fmt.Sprintf("expect:\n%v\n", test.re[0]) + if len(test.re) > 1 { + exp = fmt.Sprintf("expected one of %d patterns:\n", + len(test.re)) + for k, re := range test.re { + exp += fmt.Sprintf("pattern %d:\n%v\n", k, re) + } } + t.Fatalf("failed test case: %sgot:\n%s", exp, got) } - t.Fatalf("failed test case %v, %sgot:\n%s", - test.name, exp, got) - } + }) } } -- cgit v1.3-5-g9baa