diff options
| author | Kir Kolyshkin <kolyshkin@gmail.com> | 2024-08-29 19:51:22 -0700 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2024-09-03 20:11:30 +0000 |
| commit | c3f346a485f2fa97a7bdee82d587419b3823a1ba (patch) | |
| tree | c085a5dbe2fe5fb250b39d9ea56cc4608b6cee67 /src/os/exec | |
| parent | 76a42d74356e3c5bee0851c99665b21bf29f0c27 (diff) | |
| download | go-c3f346a485f2fa97a7bdee82d587419b3823a1ba.tar.xz | |
math,os,os/*: use testenv.Executable
As some callers don't have a testing context, modify testenv.Executable
to accept nil (similar to how testenv.GOROOT works).
Change-Id: I39112a7869933785a26b5cb6520055b3cc42b847
Reviewed-on: https://go-review.googlesource.com/c/go/+/609835
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Diffstat (limited to 'src/os/exec')
| -rw-r--r-- | src/os/exec/exec_test.go | 34 | ||||
| -rw-r--r-- | src/os/exec/lp_windows_test.go | 11 |
2 files changed, 7 insertions, 38 deletions
diff --git a/src/os/exec/exec_test.go b/src/os/exec/exec_test.go index a0bb89e203..fd185cadcf 100644 --- a/src/os/exec/exec_test.go +++ b/src/os/exec/exec_test.go @@ -159,42 +159,16 @@ func helperCommandContext(t *testing.T, ctx context.Context, name string, args . helperCommandUsed.LoadOrStore(name, true) t.Helper() - testenv.MustHaveExec(t) - + exe := testenv.Executable(t) cs := append([]string{name}, args...) if ctx != nil { - cmd = exec.CommandContext(ctx, exePath(t), cs...) + cmd = exec.CommandContext(ctx, exe, cs...) } else { - cmd = exec.Command(exePath(t), cs...) + cmd = exec.Command(exe, cs...) } return cmd } -// exePath returns the path to the running executable. -func exePath(t testing.TB) string { - exeOnce.Do(func() { - // Use os.Executable instead of os.Args[0] in case the caller modifies - // cmd.Dir: if the test binary is invoked like "./exec.test", it should - // not fail spuriously. - exeOnce.path, exeOnce.err = os.Executable() - }) - - if exeOnce.err != nil { - if t == nil { - panic(exeOnce.err) - } - t.Fatal(exeOnce.err) - } - - return exeOnce.path -} - -var exeOnce struct { - path string - err error - sync.Once -} - func chdir(t *testing.T, dir string) { t.Helper() @@ -1201,7 +1175,7 @@ func cmdHang(args ...string) { pid := os.Getpid() if *subsleep != 0 { - cmd := exec.Command(exePath(nil), "hang", subsleep.String(), "-read=true", "-probe="+probe.String()) + cmd := exec.Command(testenv.Executable(nil), "hang", subsleep.String(), "-read=true", "-probe="+probe.String()) cmd.Stdin = os.Stdin cmd.Stderr = os.Stderr out, err := cmd.StdoutPipe() diff --git a/src/os/exec/lp_windows_test.go b/src/os/exec/lp_windows_test.go index a92a29799f..15b2a0032f 100644 --- a/src/os/exec/lp_windows_test.go +++ b/src/os/exec/lp_windows_test.go @@ -25,13 +25,8 @@ func init() { registerHelperCommand("printpath", cmdPrintPath) } -func cmdPrintPath(args ...string) { - exe, err := os.Executable() - if err != nil { - fmt.Fprintf(os.Stderr, "Executable: %v\n", err) - os.Exit(1) - } - fmt.Println(exe) +func cmdPrintPath(_ ...string) { + fmt.Println(testenv.Executable(nil)) } // makePATH returns a PATH variable referring to the @@ -82,7 +77,7 @@ func installProgs(t *testing.T, root string, files []string) { // (We use a copy instead of just a symlink to ensure that os.Executable // always reports an unambiguous path, regardless of how it is implemented.) func installExe(t *testing.T, dstPath string) { - src, err := os.Open(exePath(t)) + src, err := os.Open(testenv.Executable(t)) if err != nil { t.Fatal(err) } |
