mirror of https://github.com/golang/go.git
os: add ExitCode method to ProcessState
Fixes #26539
Change-Id: I6d403c1bbb552e1f1bdcc09a7ccd60b50617e0fc
GitHub-Last-Rev: 0b5262df5d
GitHub-Pull-Request: golang/go#26544
Reviewed-on: https://go-review.googlesource.com/125443
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
2b69ad0b3c
commit
be94dac4e9
|
|
@ -168,6 +168,49 @@ func TestExitStatus(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestExitCode(t *testing.T) {
|
||||||
|
// Test that exit code are returned correctly
|
||||||
|
cmd := helperCommand(t, "exit", "42")
|
||||||
|
cmd.Run()
|
||||||
|
want := 42
|
||||||
|
got := cmd.ProcessState.ExitCode()
|
||||||
|
if want != got {
|
||||||
|
t.Errorf("ExitCode got %d, want %d", got, want)
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd = helperCommand(t, "/no-exist-executable")
|
||||||
|
cmd.Run()
|
||||||
|
want = 2
|
||||||
|
got = cmd.ProcessState.ExitCode()
|
||||||
|
if want != got {
|
||||||
|
t.Errorf("ExitCode got %d, want %d", got, want)
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd = helperCommand(t, "exit", "255")
|
||||||
|
cmd.Run()
|
||||||
|
want = 255
|
||||||
|
got = cmd.ProcessState.ExitCode()
|
||||||
|
if want != got {
|
||||||
|
t.Errorf("ExitCode got %d, want %d", got, want)
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd = helperCommand(t, "cat")
|
||||||
|
cmd.Run()
|
||||||
|
want = 0
|
||||||
|
got = cmd.ProcessState.ExitCode()
|
||||||
|
if want != got {
|
||||||
|
t.Errorf("ExitCode got %d, want %d", got, want)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test when command does not call Run().
|
||||||
|
cmd = helperCommand(t, "cat")
|
||||||
|
want = -1
|
||||||
|
got = cmd.ProcessState.ExitCode()
|
||||||
|
if want != got {
|
||||||
|
t.Errorf("ExitCode got %d, want %d", got, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestPipes(t *testing.T) {
|
func TestPipes(t *testing.T) {
|
||||||
check := func(what string, err error) {
|
check := func(what string, err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -136,3 +136,13 @@ func (p *ProcessState) String() string {
|
||||||
}
|
}
|
||||||
return "exit status: " + p.status.Msg
|
return "exit status: " + p.status.Msg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ExitCode returns the exit code of the exited process, or -1
|
||||||
|
// if the process hasn't exited or was terminated by a signal.
|
||||||
|
func (p *ProcessState) ExitCode() int {
|
||||||
|
// return -1 if the process hasn't started.
|
||||||
|
if p == nil {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
return p.status.ExitStatus()
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -106,3 +106,13 @@ func (p *ProcessState) String() string {
|
||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ExitCode returns the exit code of the exited process, or -1
|
||||||
|
// if the process hasn't exited or was terminated by a signal.
|
||||||
|
func (p *ProcessState) ExitCode() int {
|
||||||
|
// return -1 if the process hasn't started.
|
||||||
|
if p == nil {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
return p.status.ExitStatus()
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue