diff --git a/.github/workflows/client.yml b/.github/workflows/client.yml index 91964f2..0287730 100644 --- a/.github/workflows/client.yml +++ b/.github/workflows/client.yml @@ -34,7 +34,7 @@ jobs: run: go build ./... - name: Install gotestsum - run: go install gotest.tools/gotestsum@v1.12.0 + run: go install gotest.tools/gotestsum@v1.13.0 - name: Run Go tests run: gotestsum diff --git a/pkg/cmd/flag/flag_big_int_test.go b/pkg/cmd/flag/flag_big_int_test.go index 7f90a28..d753aef 100644 --- a/pkg/cmd/flag/flag_big_int_test.go +++ b/pkg/cmd/flag/flag_big_int_test.go @@ -1,9 +1,8 @@ package flag import ( - "fmt" + "errors" "math/big" - "reflect" "testing" pflag "github.com/spf13/pflag" @@ -25,9 +24,9 @@ func TestBigIntVarFlag_Set(t *testing.T) { }, "invalid value": { value: "100k", - expectedError: fmt.Errorf( - "invalid argument \"100k\" for \"--%s\" flag: failed to parse as big.Int: 100k", - bigIntFlagName, + expectedError: errors.New( + "invalid argument \"100k\" for \"--" + bigIntFlagName + + "\" flag: failed to parse as big.Int: 100k", ), expectedValue: defaultValue, }, @@ -43,7 +42,7 @@ func TestBigIntVarFlag_Set(t *testing.T) { err := flags.Set(bigIntFlagName, test.value) - if !reflect.DeepEqual(test.expectedError, err) { + if errorMessage(err) != errorMessage(test.expectedError) { t.Errorf( "unexpected error\nexpected: %v\nactual: %v\n", test.expectedError, diff --git a/pkg/cmd/flag/flag_helpers_test.go b/pkg/cmd/flag/flag_helpers_test.go new file mode 100644 index 0000000..53c0fc8 --- /dev/null +++ b/pkg/cmd/flag/flag_helpers_test.go @@ -0,0 +1,12 @@ +package flag + +// errorMessage returns err.Error() or "" if err is nil. Used to compare error +// equality by message string rather than by concrete type, since pflag wraps +// underlying errors with fmt.Errorf("...: %w", inner) — the rendered message +// stays stable across pflag versions but the concrete type does not. +func errorMessage(err error) string { + if err == nil { + return "" + } + return err.Error() +} diff --git a/pkg/cmd/flag/flag_wei_test.go b/pkg/cmd/flag/flag_wei_test.go index 498d0d4..bfadce0 100644 --- a/pkg/cmd/flag/flag_wei_test.go +++ b/pkg/cmd/flag/flag_wei_test.go @@ -1,9 +1,8 @@ package flag import ( - "fmt" + "errors" "math/big" - "reflect" "testing" "github.com/keep-network/keep-common/pkg/chain/ethereum" @@ -37,16 +36,16 @@ func TestWeiVarFlag_Set(t *testing.T) { }, "value with invalid comma delimiter": { value: "3,5 ether", - expectedError: fmt.Errorf( - "invalid argument \"3,5 ether\" for \"--%s\" flag: failed to parse value: [3,5 ether]", - flagName, + expectedError: errors.New( + "invalid argument \"3,5 ether\" for \"--" + flagName + + "\" flag: failed to parse value: [3,5 ether]", ), }, "value with invalid unit": { value: "10 bei", - expectedError: fmt.Errorf( - "invalid argument \"10 bei\" for \"--%s\" flag: invalid unit: bei; please use one of: ether, gwei, wei", - flagName, + expectedError: errors.New( + "invalid argument \"10 bei\" for \"--" + flagName + + "\" flag: invalid unit: bei; please use one of: ether, gwei, wei", ), }, } @@ -61,7 +60,7 @@ func TestWeiVarFlag_Set(t *testing.T) { err := flags.Set(flagName, test.value) - if !reflect.DeepEqual(test.expectedError, err) { + if errorMessage(err) != errorMessage(test.expectedError) { t.Errorf( "unexpected error\nexpected: %v\nactual: %v\n", test.expectedError,