aboutsummaryrefslogtreecommitdiff
path: root/src/os/exec/exec_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/os/exec/exec_test.go')
-rw-r--r--src/os/exec/exec_test.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/os/exec/exec_test.go b/src/os/exec/exec_test.go
index c749de99db..dbe59fea11 100644
--- a/src/os/exec/exec_test.go
+++ b/src/os/exec/exec_test.go
@@ -1835,3 +1835,32 @@ func TestPathRace(t *testing.T) {
t.Logf("running in background: %v", cmd)
<-done
}
+
+func TestAbsPathExec(t *testing.T) {
+ testenv.MustHaveExec(t)
+ testenv.MustHaveGoBuild(t) // must have GOROOT/bin/gofmt, but close enough
+
+ // A simple exec of a full path should work.
+ // Go 1.22 broke this on Windows, requiring ".exe"; see #66586.
+ exe := filepath.Join(testenv.GOROOT(t), "bin/gofmt")
+ cmd := exec.Command(exe)
+ if cmd.Path != exe {
+ t.Errorf("exec.Command(%#q) set Path=%#q", exe, cmd.Path)
+ }
+ err := cmd.Run()
+ if err != nil {
+ t.Errorf("using exec.Command(%#q): %v", exe, err)
+ }
+
+ cmd = &exec.Cmd{Path: exe}
+ err = cmd.Run()
+ if err != nil {
+ t.Errorf("using exec.Cmd{Path: %#q}: %v", cmd.Path, err)
+ }
+
+ cmd = &exec.Cmd{Path: "gofmt", Dir: "/"}
+ err = cmd.Run()
+ if err == nil {
+ t.Errorf("using exec.Cmd{Path: %#q}: unexpected success", cmd.Path)
+ }
+}