From 4893b39ad8a782a9ef594d1e7a4722ce4bd2991b Mon Sep 17 00:00:00 2001 From: Bracken Dawson Date: Wed, 29 Jun 2022 18:09:20 +0100 Subject: [PATCH 1/2] Nil actual type made AnythingOfType matcher panic Handle nil types up front before calling any methods on the reflect.Type --- mock/mock.go | 9 +++++++-- mock/mock_test.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/mock/mock.go b/mock/mock.go index f0af8246c..3178387d7 100644 --- a/mock/mock.go +++ b/mock/mock.go @@ -909,10 +909,15 @@ func (args Arguments) Diff(objects []interface{}) (string, int) { } } else if reflect.TypeOf(expected) == reflect.TypeOf((*AnythingOfTypeArgument)(nil)).Elem() { // type checking - if reflect.TypeOf(actual).Name() != string(expected.(AnythingOfTypeArgument)) && reflect.TypeOf(actual).String() != string(expected.(AnythingOfTypeArgument)) { + if reflect.TypeOf(actual) == nil { + if expected != AnythingOfTypeArgument("") { + differences++ + output = fmt.Sprintf("%s\t%d: FAIL: type %s != type - %s\n", output, i, expected, actualFmt) + } + } else if reflect.TypeOf(actual).Name() != string(expected.(AnythingOfTypeArgument)) && reflect.TypeOf(actual).String() != string(expected.(AnythingOfTypeArgument)) { // not match differences++ - output = fmt.Sprintf("%s\t%d: FAIL: type %s != type %s - %s\n", output, i, expected, reflect.TypeOf(actual).Name(), actualFmt) + output = fmt.Sprintf("%s\t%d: FAIL: type %s != type %s - %s\n", output, i, expected, reflect.TypeOf(actual).String(), actualFmt) } } else if reflect.TypeOf(expected) == reflect.TypeOf((*IsTypeArgument)(nil)) { t := expected.(*IsTypeArgument).t diff --git a/mock/mock_test.go b/mock/mock_test.go index f77dfe461..c65c94b14 100644 --- a/mock/mock_test.go +++ b/mock/mock_test.go @@ -1613,6 +1613,50 @@ func Test_Arguments_Diff_WithAnythingOfTypeArgument_Failing(t *testing.T) { } +func Test_Arguments_Diff__WithAnythingOfTypeArgument_NilType(t *testing.T) { + + var args = Arguments([]interface{}{AnythingOfType("")}) + var count int + _, count = args.Diff([]interface{}{nil}) + + assert.Zero(t, count) + +} + +func Test_Arguments_Diff__WithAnythingOfTypeArgument_NilType_Failing(t *testing.T) { + + var args = Arguments([]interface{}{AnythingOfType("string")}) + var count int + var diff string + diff, count = args.Diff([]interface{}{nil}) + + assert.Equal(t, 1, count) + assert.Contains(t, diff, "type string != type - (=)") + +} + +func Test_Arguments_Diff__WithAnythingOfTypeArgument_NilValue(t *testing.T) { + + var args = Arguments([]interface{}{AnythingOfType("*string")}) + var count int + _, count = args.Diff([]interface{}{(*string)(nil)}) + + assert.Zero(t, count) + +} + +func Test_Arguments_Diff__WithAnythingOfTypeArgument_NilValue_Failing(t *testing.T) { + + var args = Arguments([]interface{}{AnythingOfType("*int")}) + var count int + var diff string + diff, count = args.Diff([]interface{}{(*string)(nil)}) + + assert.Equal(t, 1, count) + assert.Contains(t, diff, "type *int != type *string - (*string=)") + +} + func Test_Arguments_Diff_WithIsTypeArgument(t *testing.T) { var args = Arguments([]interface{}{"string", IsType(0), true}) var count int From fee3c2d80ba91cf10b57d4b60eb2fe22395d32d6 Mon Sep 17 00:00:00 2001 From: Bracken Dawson Date: Thu, 30 Jun 2022 14:47:36 +0100 Subject: [PATCH 2/2] Test names should not contain double underscore --- mock/mock_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mock/mock_test.go b/mock/mock_test.go index c65c94b14..aaa674437 100644 --- a/mock/mock_test.go +++ b/mock/mock_test.go @@ -1613,7 +1613,7 @@ func Test_Arguments_Diff_WithAnythingOfTypeArgument_Failing(t *testing.T) { } -func Test_Arguments_Diff__WithAnythingOfTypeArgument_NilType(t *testing.T) { +func Test_Arguments_Diff_WithAnythingOfTypeArgument_NilType(t *testing.T) { var args = Arguments([]interface{}{AnythingOfType("")}) var count int @@ -1623,7 +1623,7 @@ func Test_Arguments_Diff__WithAnythingOfTypeArgument_NilType(t *testing.T) { } -func Test_Arguments_Diff__WithAnythingOfTypeArgument_NilType_Failing(t *testing.T) { +func Test_Arguments_Diff_WithAnythingOfTypeArgument_NilType_Failing(t *testing.T) { var args = Arguments([]interface{}{AnythingOfType("string")}) var count int @@ -1635,7 +1635,7 @@ func Test_Arguments_Diff__WithAnythingOfTypeArgument_NilType_Failing(t *testing. } -func Test_Arguments_Diff__WithAnythingOfTypeArgument_NilValue(t *testing.T) { +func Test_Arguments_Diff_WithAnythingOfTypeArgument_NilValue(t *testing.T) { var args = Arguments([]interface{}{AnythingOfType("*string")}) var count int @@ -1645,7 +1645,7 @@ func Test_Arguments_Diff__WithAnythingOfTypeArgument_NilValue(t *testing.T) { } -func Test_Arguments_Diff__WithAnythingOfTypeArgument_NilValue_Failing(t *testing.T) { +func Test_Arguments_Diff_WithAnythingOfTypeArgument_NilValue_Failing(t *testing.T) { var args = Arguments([]interface{}{AnythingOfType("*int")}) var count int