Avoids returning ExitError on exit code zero, and optimizes for no allocations (#1284)
Fixes #1283 Signed-off-by: Adrian Cole <adrian@tetrate.io>
This commit is contained in:
@@ -8,8 +8,7 @@ import (
|
||||
)
|
||||
|
||||
type notExitError struct {
|
||||
moduleName string
|
||||
exitCode uint32
|
||||
exitCode uint32
|
||||
}
|
||||
|
||||
func (e *notExitError) Error() string {
|
||||
@@ -17,7 +16,7 @@ func (e *notExitError) Error() string {
|
||||
}
|
||||
|
||||
func TestIs(t *testing.T) {
|
||||
err := NewExitError("some module", 2)
|
||||
err := NewExitError(2)
|
||||
tests := []struct {
|
||||
name string
|
||||
target error
|
||||
@@ -28,26 +27,15 @@ func TestIs(t *testing.T) {
|
||||
target: err,
|
||||
matches: true,
|
||||
},
|
||||
{
|
||||
name: "same content",
|
||||
target: NewExitError("some module", 2),
|
||||
matches: true,
|
||||
},
|
||||
{
|
||||
name: "different module name",
|
||||
target: NewExitError("not some module", 2),
|
||||
matches: false,
|
||||
},
|
||||
{
|
||||
name: "different exit code",
|
||||
target: NewExitError("some module", 0),
|
||||
target: NewExitError(1),
|
||||
matches: false,
|
||||
},
|
||||
{
|
||||
name: "different type",
|
||||
target: ¬ExitError{
|
||||
moduleName: "some module",
|
||||
exitCode: 2,
|
||||
exitCode: 2,
|
||||
},
|
||||
matches: false,
|
||||
},
|
||||
@@ -64,18 +52,18 @@ func TestIs(t *testing.T) {
|
||||
|
||||
func TestExitError_Error(t *testing.T) {
|
||||
t.Run("timeout", func(t *testing.T) {
|
||||
err := NewExitError("foo", ExitCodeDeadlineExceeded)
|
||||
err := NewExitError(ExitCodeDeadlineExceeded)
|
||||
require.Equal(t, ExitCodeDeadlineExceeded, err.ExitCode())
|
||||
require.EqualError(t, err, "module \"foo\" closed with context deadline exceeded")
|
||||
require.EqualError(t, err, "module closed with context deadline exceeded")
|
||||
})
|
||||
t.Run("cancel", func(t *testing.T) {
|
||||
err := NewExitError("foo", ExitCodeContextCanceled)
|
||||
err := NewExitError(ExitCodeContextCanceled)
|
||||
require.Equal(t, ExitCodeContextCanceled, err.ExitCode())
|
||||
require.EqualError(t, err, "module \"foo\" closed with context canceled")
|
||||
require.EqualError(t, err, "module closed with context canceled")
|
||||
})
|
||||
t.Run("normal", func(t *testing.T) {
|
||||
err := NewExitError("foo", 123)
|
||||
err := NewExitError(123)
|
||||
require.Equal(t, uint32(123), err.ExitCode())
|
||||
require.EqualError(t, err, "module \"foo\" closed with exit_code(123)")
|
||||
require.EqualError(t, err, "module closed with exit_code(123)")
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user