]> Cypherpunks repositories - gostls13.git/commitdiff
internal/trace: end test programs with SIGQUIT
authorMichael Anthony Knyszek <mknyszek@google.com>
Wed, 11 Jun 2025 21:20:05 +0000 (21:20 +0000)
committerMichael Knyszek <mknyszek@google.com>
Thu, 12 Jun 2025 20:23:34 +0000 (13:23 -0700)
This change switches from using testenv.Command to
testenv.CommandContext which is a little bit friendlier. It also
switches away from using 'go run' to 'go build' and running the
resulting binary explicitly. This helps eliminate any questions about
signal handling and propagation.

For #72740.

Change-Id: Ife8010da89a7bc439e061fe0c9c6b1f5620d90f1
Reviewed-on: https://go-review.googlesource.com/c/go/+/680977
Reviewed-by: Carlos Amedee <carlos@golang.org>
TryBot-Bypass: Michael Knyszek <mknyszek@google.com>

src/internal/trace/trace_test.go

index 7eb50d0f4eafc524f2f01d7ddabeb80c630c369a..eaf194cf077e76fa79c7ff8ff97f88c8f11c5203 100644 (file)
@@ -582,13 +582,30 @@ func testTraceProg(t *testing.T, progName string, extra func(t *testing.T, trace
        testPath := filepath.Join("./testdata/testprog", progName)
        testName := progName
        runTest := func(t *testing.T, stress bool, extraGODEBUG string) {
-               // Run the program and capture the trace, which is always written to stdout.
-               cmd := testenv.Command(t, testenv.GoToolPath(t), "run")
+               // Build the program.
+               binFile, err := os.CreateTemp("", progName)
+               if err != nil {
+                       t.Fatalf("failed to create temporary output file: %v", err)
+               }
+               bin := binFile.Name()
+               binFile.Close()
+               t.Cleanup(func() {
+                       os.Remove(bin)
+               })
+               buildCmd := testenv.CommandContext(t, t.Context(), testenv.GoToolPath(t), "build", "-o", bin)
                if race.Enabled {
-                       cmd.Args = append(cmd.Args, "-race")
+                       buildCmd.Args = append(buildCmd.Args, "-race")
+               }
+               buildCmd.Args = append(buildCmd.Args, testPath)
+               buildCmd.Env = append(os.Environ(), "GOEXPERIMENT=rangefunc")
+               buildOutput, err := buildCmd.CombinedOutput()
+               if err != nil {
+                       t.Fatalf("failed to build %s: %v: output:\n%s", testPath, err, buildOutput)
                }
-               cmd.Args = append(cmd.Args, testPath)
-               cmd.Env = append(os.Environ(), "GOEXPERIMENT=rangefunc")
+
+               // Run the program and capture the trace, which is always written to stdout.
+               cmd := testenv.CommandContext(t, t.Context(), bin)
+
                // Add a stack ownership check. This is cheap enough for testing.
                godebug := "tracecheckstackownership=1"
                if stress {