1
0
mirror of https://github.com/golang/go synced 2024-11-17 12:34:46 -07:00

cmd/internal/obj: use testenv.Command instead of exec.Command in tests

testenv.Command sets a default timeout based on the test's deadline
and sends SIGQUIT (where supported) in case of a hang.

Change-Id: Ica1a9985f9abb1935434367c9c8ba28fc50f331d
Reviewed-on: https://go-review.googlesource.com/c/go/+/450699
Auto-Submit: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
This commit is contained in:
Bryan C. Mills 2022-11-15 10:14:16 -05:00 committed by Gopher Robot
parent 6484e813b5
commit 5ccee1199e
6 changed files with 19 additions and 25 deletions

View File

@ -9,7 +9,6 @@ import (
"fmt" "fmt"
"internal/testenv" "internal/testenv"
"os" "os"
"os/exec"
"path/filepath" "path/filepath"
"regexp" "regexp"
"testing" "testing"
@ -45,7 +44,7 @@ func TestLarge(t *testing.T) {
pattern := `0x0080\s00128\s\(.*\)\tMOVD\t\$3,\sR3` pattern := `0x0080\s00128\s\(.*\)\tMOVD\t\$3,\sR3`
// assemble generated file // assemble generated file
cmd := exec.Command(testenv.GoToolPath(t), "tool", "asm", "-S", "-o", filepath.Join(dir, "test.o"), tmpfile) cmd := testenv.Command(t, testenv.GoToolPath(t), "tool", "asm", "-S", "-o", filepath.Join(dir, "test.o"), tmpfile)
cmd.Env = append(os.Environ(), "GOOS=linux") cmd.Env = append(os.Environ(), "GOOS=linux")
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err != nil { if err != nil {
@ -60,7 +59,7 @@ func TestLarge(t *testing.T) {
} }
// build generated file // build generated file
cmd = exec.Command(testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "x.o"), tmpfile) cmd = testenv.Command(t, testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "x.o"), tmpfile)
cmd.Env = append(os.Environ(), "GOOS=linux") cmd.Env = append(os.Environ(), "GOOS=linux")
out, err = cmd.CombinedOutput() out, err = cmd.CombinedOutput()
if err != nil { if err != nil {
@ -94,7 +93,7 @@ func TestNoRet(t *testing.T) {
if err := os.WriteFile(tmpfile, []byte("TEXT ·stub(SB),$0-0\nNOP\n"), 0644); err != nil { if err := os.WriteFile(tmpfile, []byte("TEXT ·stub(SB),$0-0\nNOP\n"), 0644); err != nil {
t.Fatal(err) t.Fatal(err)
} }
cmd := exec.Command(testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "x.o"), tmpfile) cmd := testenv.Command(t, testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "x.o"), tmpfile)
cmd.Env = append(os.Environ(), "GOOS=linux") cmd.Env = append(os.Environ(), "GOOS=linux")
if out, err := cmd.CombinedOutput(); err != nil { if out, err := cmd.CombinedOutput(); err != nil {
t.Errorf("%v\n%s", err, out) t.Errorf("%v\n%s", err, out)
@ -132,7 +131,7 @@ func TestPCALIGN(t *testing.T) {
if err := os.WriteFile(tmpfile, test.code, 0644); err != nil { if err := os.WriteFile(tmpfile, test.code, 0644); err != nil {
t.Fatal(err) t.Fatal(err)
} }
cmd := exec.Command(testenv.GoToolPath(t), "tool", "asm", "-S", "-o", tmpout, tmpfile) cmd := testenv.Command(t, testenv.GoToolPath(t), "tool", "asm", "-S", "-o", tmpout, tmpfile)
cmd.Env = append(os.Environ(), "GOOS=linux") cmd.Env = append(os.Environ(), "GOOS=linux")
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err != nil { if err != nil {

View File

@ -8,7 +8,6 @@ import (
"bytes" "bytes"
"internal/testenv" "internal/testenv"
"os" "os"
"os/exec"
"path/filepath" "path/filepath"
"testing" "testing"
"unsafe" "unsafe"
@ -111,7 +110,7 @@ func TestSymbolTooLarge(t *testing.T) { // Issue 42054
t.Fatalf("failed to write source file: %v\n", err) t.Fatalf("failed to write source file: %v\n", err)
} }
obj := filepath.Join(tmpdir, "p.o") obj := filepath.Join(tmpdir, "p.o")
cmd := exec.Command(testenv.GoToolPath(t), "tool", "compile", "-p=p", "-o", obj, src) cmd := testenv.Command(t, testenv.GoToolPath(t), "tool", "compile", "-p=p", "-o", obj, src)
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err == nil { if err == nil {
t.Fatalf("did not fail\noutput: %s", out) t.Fatalf("did not fail\noutput: %s", out)
@ -137,7 +136,7 @@ func TestNoRefName(t *testing.T) {
// Build the fmt package with norefname. Not rebuilding all packages to save time. // Build the fmt package with norefname. Not rebuilding all packages to save time.
// Also testing that norefname and non-norefname packages can link together. // Also testing that norefname and non-norefname packages can link together.
cmd := exec.Command(testenv.GoToolPath(t), "build", "-gcflags=fmt=-d=norefname", "-o", exe, src) cmd := testenv.Command(t, testenv.GoToolPath(t), "build", "-gcflags=fmt=-d=norefname", "-o", exe, src)
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err != nil { if err != nil {
t.Fatalf("build failed: %v, output:\n%s", err, out) t.Fatalf("build failed: %v, output:\n%s", err, out)

View File

@ -10,7 +10,6 @@ import (
"internal/testenv" "internal/testenv"
"math" "math"
"os" "os"
"os/exec"
"path/filepath" "path/filepath"
"regexp" "regexp"
"strings" "strings"
@ -192,7 +191,7 @@ func TestPfxAlign(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("can't write output: %v\n", err) t.Fatalf("can't write output: %v\n", err)
} }
cmd := exec.Command(testenv.GoToolPath(t), "tool", "asm", "-S", "-o", filepath.Join(dir, "test.o"), tmpfile) cmd := testenv.Command(t, testenv.GoToolPath(t), "tool", "asm", "-S", "-o", filepath.Join(dir, "test.o"), tmpfile)
cmd.Env = append(os.Environ(), "GOOS=linux", "GOARCH=ppc64le") cmd.Env = append(os.Environ(), "GOOS=linux", "GOARCH=ppc64le")
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err != nil { if err != nil {
@ -288,7 +287,7 @@ func TestLarge(t *testing.T) {
// Test on all supported ppc64 platforms // Test on all supported ppc64 platforms
for _, platenv := range platformEnvs { for _, platenv := range platformEnvs {
cmd := exec.Command(testenv.GoToolPath(t), "tool", "asm", "-S", "-o", filepath.Join(dir, "test.o"), tmpfile) cmd := testenv.Command(t, testenv.GoToolPath(t), "tool", "asm", "-S", "-o", filepath.Join(dir, "test.o"), tmpfile)
cmd.Env = append(os.Environ(), platenv...) cmd.Env = append(os.Environ(), platenv...)
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err != nil { if err != nil {
@ -351,7 +350,7 @@ func TestPCalign(t *testing.T) {
} }
// build generated file without errors and assemble it // build generated file without errors and assemble it
cmd := exec.Command(testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "x.o"), "-S", tmpfile) cmd := testenv.Command(t, testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "x.o"), "-S", tmpfile)
cmd.Env = append(os.Environ(), "GOARCH=ppc64le", "GOOS=linux") cmd.Env = append(os.Environ(), "GOARCH=ppc64le", "GOOS=linux")
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err != nil { if err != nil {
@ -391,7 +390,7 @@ func TestPCalign(t *testing.T) {
} }
// build test with errors and check for messages // build test with errors and check for messages
cmd = exec.Command(testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "xi.o"), "-S", tmpfile) cmd = testenv.Command(t, testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "xi.o"), "-S", tmpfile)
cmd.Env = append(os.Environ(), "GOARCH=ppc64le", "GOOS=linux") cmd.Env = append(os.Environ(), "GOARCH=ppc64le", "GOOS=linux")
out, err = cmd.CombinedOutput() out, err = cmd.CombinedOutput()
if !strings.Contains(string(out), "Unexpected alignment") { if !strings.Contains(string(out), "Unexpected alignment") {

View File

@ -9,7 +9,6 @@ import (
"fmt" "fmt"
"internal/testenv" "internal/testenv"
"os" "os"
"os/exec"
"path/filepath" "path/filepath"
"runtime" "runtime"
"testing" "testing"
@ -39,7 +38,7 @@ func TestLargeBranch(t *testing.T) {
} }
// Assemble generated file. // Assemble generated file.
cmd := exec.Command(testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "x.o"), tmpfile) cmd := testenv.Command(t, testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "x.o"), tmpfile)
cmd.Env = append(os.Environ(), "GOARCH=riscv64", "GOOS=linux") cmd.Env = append(os.Environ(), "GOARCH=riscv64", "GOOS=linux")
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err != nil { if err != nil {
@ -96,7 +95,7 @@ func y()
} }
// Build generated files. // Build generated files.
cmd := exec.Command(testenv.GoToolPath(t), "build", "-ldflags=-linkmode=internal") cmd := testenv.Command(t, testenv.GoToolPath(t), "build", "-ldflags=-linkmode=internal")
cmd.Dir = dir cmd.Dir = dir
cmd.Env = append(os.Environ(), "GOARCH=riscv64", "GOOS=linux") cmd.Env = append(os.Environ(), "GOARCH=riscv64", "GOOS=linux")
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
@ -105,7 +104,7 @@ func y()
} }
if runtime.GOARCH == "riscv64" && testenv.HasCGO() { if runtime.GOARCH == "riscv64" && testenv.HasCGO() {
cmd := exec.Command(testenv.GoToolPath(t), "build", "-ldflags=-linkmode=external") cmd := testenv.Command(t, testenv.GoToolPath(t), "build", "-ldflags=-linkmode=external")
cmd.Dir = dir cmd.Dir = dir
cmd.Env = append(os.Environ(), "GOARCH=riscv64", "GOOS=linux") cmd.Env = append(os.Environ(), "GOARCH=riscv64", "GOOS=linux")
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
@ -138,7 +137,7 @@ func TestNoRet(t *testing.T) {
if err := os.WriteFile(tmpfile, []byte("TEXT ·stub(SB),$0-0\nNOP\n"), 0644); err != nil { if err := os.WriteFile(tmpfile, []byte("TEXT ·stub(SB),$0-0\nNOP\n"), 0644); err != nil {
t.Fatal(err) t.Fatal(err)
} }
cmd := exec.Command(testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "x.o"), tmpfile) cmd := testenv.Command(t, testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "x.o"), tmpfile)
cmd.Env = append(os.Environ(), "GOARCH=riscv64", "GOOS=linux") cmd.Env = append(os.Environ(), "GOARCH=riscv64", "GOOS=linux")
if out, err := cmd.CombinedOutput(); err != nil { if out, err := cmd.CombinedOutput(); err != nil {
t.Errorf("%v\n%s", err, out) t.Errorf("%v\n%s", err, out)
@ -192,7 +191,7 @@ TEXT _stub(SB),$0-0
if err := os.WriteFile(tmpfile, []byte(asm), 0644); err != nil { if err := os.WriteFile(tmpfile, []byte(asm), 0644); err != nil {
t.Fatal(err) t.Fatal(err)
} }
cmd := exec.Command(testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "x.o"), tmpfile) cmd := testenv.Command(t, testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "x.o"), tmpfile)
cmd.Env = append(os.Environ(), "GOARCH=riscv64", "GOOS=linux") cmd.Env = append(os.Environ(), "GOARCH=riscv64", "GOOS=linux")
if out, err := cmd.CombinedOutput(); err != nil { if out, err := cmd.CombinedOutput(); err != nil {
t.Errorf("%v\n%s", err, out) t.Errorf("%v\n%s", err, out)
@ -206,7 +205,7 @@ func TestBranch(t *testing.T) {
testenv.MustHaveGoBuild(t) testenv.MustHaveGoBuild(t)
cmd := exec.Command(testenv.GoToolPath(t), "test") cmd := testenv.Command(t, testenv.GoToolPath(t), "test")
cmd.Dir = "testdata/testbranch" cmd.Dir = "testdata/testbranch"
if out, err := testenv.CleanCmdEnv(cmd).CombinedOutput(); err != nil { if out, err := testenv.CleanCmdEnv(cmd).CombinedOutput(); err != nil {
t.Errorf("Branch test failed: %v\n%s", err, out) t.Errorf("Branch test failed: %v\n%s", err, out)

View File

@ -10,7 +10,6 @@ import (
"fmt" "fmt"
"internal/testenv" "internal/testenv"
"os" "os"
"os/exec"
"path/filepath" "path/filepath"
"regexp" "regexp"
"strconv" "strconv"
@ -98,7 +97,7 @@ func asmOutput(t *testing.T, s string) []byte {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
cmd := exec.Command( cmd := testenv.Command(t,
testenv.GoToolPath(t), "tool", "asm", "-S", "-dynlink", testenv.GoToolPath(t), "tool", "asm", "-S", "-dynlink",
"-o", filepath.Join(tmpdir, "output.6"), tmpfile.Name()) "-o", filepath.Join(tmpdir, "output.6"), tmpfile.Name())

View File

@ -9,7 +9,6 @@ import (
"fmt" "fmt"
"internal/testenv" "internal/testenv"
"os" "os"
"os/exec"
"path/filepath" "path/filepath"
"testing" "testing"
) )
@ -60,7 +59,7 @@ func objdumpOutput(t *testing.T, mname, source string) []byte {
t.Fatal(err) t.Fatal(err)
} }
cmd := exec.Command( cmd := testenv.Command(t,
testenv.GoToolPath(t), "build", "-o", testenv.GoToolPath(t), "build", "-o",
filepath.Join(tmpdir, "output")) filepath.Join(tmpdir, "output"))
@ -72,7 +71,7 @@ func objdumpOutput(t *testing.T, mname, source string) []byte {
if err != nil { if err != nil {
t.Fatalf("error %s output %s", err, out) t.Fatalf("error %s output %s", err, out)
} }
cmd2 := exec.Command( cmd2 := testenv.Command(t,
testenv.GoToolPath(t), "tool", "objdump", "-s", "testASM", testenv.GoToolPath(t), "tool", "objdump", "-s", "testASM",
filepath.Join(tmpdir, "output")) filepath.Join(tmpdir, "output"))
cmd2.Env = cmd.Env cmd2.Env = cmd.Env