mirror of
https://github.com/golang/go
synced 2024-11-11 18:31:38 -07:00
os/exec: return clear error for missing cmd.Path
Following up on CL 403694, there is a bit of confusion about when Path is and isn't set, along with now the exported Err field. Catch the case where Path and Err (and lookPathErr) are all unset and give a helpful error. Fixes #52574 Followup after #43724. Change-Id: I03205172aef3801c3194f5098bdb93290c02b1b6 Reviewed-on: https://go-review.googlesource.com/c/go/+/403759 Reviewed-by: Bryan Mills <bcmills@google.com> Reviewed-by: Roland Shoemaker <roland@golang.org>
This commit is contained in:
parent
7a574ff23f
commit
960ffa98ce
@ -465,6 +465,9 @@ func lookExtensions(path, dir string) (string, error) {
|
||||
// The Wait method will return the exit code and release associated resources
|
||||
// once the command exits.
|
||||
func (c *Cmd) Start() error {
|
||||
if c.Path == "" && c.Err == nil && c.lookPathErr == nil {
|
||||
c.Err = errors.New("exec: no command")
|
||||
}
|
||||
if c.Err != nil || c.lookPathErr != nil {
|
||||
c.closeDescriptors(c.closeAfterStart)
|
||||
c.closeDescriptors(c.closeAfterWait)
|
||||
|
@ -1125,3 +1125,11 @@ func TestStringPathNotResolved(t *testing.T) {
|
||||
t.Errorf("String(%q, %q) = %q, want %q", "makemeasandwich", "-lettuce", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNoPath(t *testing.T) {
|
||||
err := new(exec.Cmd).Start()
|
||||
want := "exec: no command"
|
||||
if err == nil || err.Error() != want {
|
||||
t.Errorf("new(Cmd).Start() = %v, want %q", err, want)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user