From b9010d6e8591bbc414a73a30debbae0d86026d63 Mon Sep 17 00:00:00 2001 From: Thom Carlin Date: Mon, 15 Jul 2024 14:35:32 -0400 Subject: [PATCH 1/2] Add error_kind test --- pkg/utils/error_kind.go | 12 ++-- pkg/utils/error_kind_test.go | 135 +++++++++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+), 6 deletions(-) create mode 100644 pkg/utils/error_kind_test.go diff --git a/pkg/utils/error_kind.go b/pkg/utils/error_kind.go index aaff9ca30..a47908312 100644 --- a/pkg/utils/error_kind.go +++ b/pkg/utils/error_kind.go @@ -4,20 +4,20 @@ import "fmt" // ErrorWithKind represents an error wrapped with a designation of what kind of error it is. type ErrorWithKind struct { - err error - kind string + Err error + Kind string } // Error returns the error text as a string. func (ek ErrorWithKind) Error() string { - return fmt.Sprintf("%s error: %s", ek.kind, ek.err) + return fmt.Sprintf("%s error: %v", ek.Kind, ek.Err) } // WrapErrorWithKind creates an ErrorWithKind that wraps an underlying error. func WrapErrorWithKind(err error, kind string) ErrorWithKind { return ErrorWithKind{ - err: err, - kind: kind, + Err: err, + Kind: kind, } } @@ -28,5 +28,5 @@ func ErrorIsKind(err error, kind string) bool { return false } - return ek.kind == kind + return ek.Kind == kind } diff --git a/pkg/utils/error_kind_test.go b/pkg/utils/error_kind_test.go new file mode 100644 index 000000000..f38455b26 --- /dev/null +++ b/pkg/utils/error_kind_test.go @@ -0,0 +1,135 @@ +package utils_test + +import ( + "fmt" + "reflect" + "testing" + + "github.com/ansible/receptor/pkg/utils" +) + +const goodKind string = "connection" +const goodErrorString string = "unit was already started" + +var goodError error = fmt.Errorf(goodErrorString) + +func TestErrorWithKind_Error(t *testing.T) { + type fields struct { + err error + kind string + } + tests := []struct { + name string + fields fields + want string + }{ + { + name: "Positive", + fields: fields{ + err: goodError, + kind: goodKind, + }, + want: fmt.Sprintf("%s error: %s", goodKind, goodErrorString), + }, + { + name: "Negative", + fields: fields{ + err: nil, + kind: goodKind, + }, + want: fmt.Sprintf("%s error: ", goodKind), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + ek := utils.ErrorWithKind{ + Err: tt.fields.err, + Kind: tt.fields.kind, + } + if got := ek.Error(); got != tt.want { + t.Errorf("ErrorWithKind.Error() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestWrapErrorWithKind(t *testing.T) { + type args struct { + err error + kind string + } + tests := []struct { + name string + args args + want utils.ErrorWithKind + }{ + { + name: "Positive", + args: args{ + err: goodError, + kind: goodKind, + }, + want: utils.ErrorWithKind{ + Err: goodError, + Kind: goodKind, + }, + }, + { + name: "Negative", + args: args{ + err: nil, + kind: goodKind, + }, + want: utils.ErrorWithKind{ + Err: nil, + Kind: goodKind, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := utils.WrapErrorWithKind(tt.args.err, tt.args.kind); !reflect.DeepEqual(got, tt.want) { + t.Errorf("WrapErrorWithKind() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestErrorIsKind(t *testing.T) { + type args struct { + err error + kind string + } + tests := []struct { + name string + args args + want bool + }{ + { + name: "Positive", + args: args{ + err: utils.WrapErrorWithKind( + goodError, + goodKind, + ), + kind: goodKind, + }, + want: true, + }, + { + name: "Negative", + args: args{ + err: nil, + kind: goodKind, + }, + want: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := utils.ErrorIsKind(tt.args.err, tt.args.kind); got != tt.want { + t.Errorf("ErrorIsKind() = %v, want %v", got, tt.want) + } + }) + } +} From 17204001eeec81ed8d37c87cf01d2b4df44db927 Mon Sep 17 00:00:00 2001 From: Thom Carlin Date: Mon, 15 Jul 2024 14:57:41 -0400 Subject: [PATCH 2/2] Fix lint issue --- pkg/utils/error_kind_test.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pkg/utils/error_kind_test.go b/pkg/utils/error_kind_test.go index f38455b26..b7da476bd 100644 --- a/pkg/utils/error_kind_test.go +++ b/pkg/utils/error_kind_test.go @@ -8,10 +8,12 @@ import ( "github.com/ansible/receptor/pkg/utils" ) -const goodKind string = "connection" -const goodErrorString string = "unit was already started" +const ( + goodKind string = "connection" + goodErrorString string = "unit was already started" +) -var goodError error = fmt.Errorf(goodErrorString) +var errUnitWasAlreadyStarted error = fmt.Errorf(goodErrorString) func TestErrorWithKind_Error(t *testing.T) { type fields struct { @@ -26,7 +28,7 @@ func TestErrorWithKind_Error(t *testing.T) { { name: "Positive", fields: fields{ - err: goodError, + err: errUnitWasAlreadyStarted, kind: goodKind, }, want: fmt.Sprintf("%s error: %s", goodKind, goodErrorString), @@ -66,11 +68,11 @@ func TestWrapErrorWithKind(t *testing.T) { { name: "Positive", args: args{ - err: goodError, + err: errUnitWasAlreadyStarted, kind: goodKind, }, want: utils.ErrorWithKind{ - Err: goodError, + Err: errUnitWasAlreadyStarted, Kind: goodKind, }, }, @@ -109,7 +111,7 @@ func TestErrorIsKind(t *testing.T) { name: "Positive", args: args{ err: utils.WrapErrorWithKind( - goodError, + errUnitWasAlreadyStarted, goodKind, ), kind: goodKind,