Skip to content
This repository was archived by the owner on Jun 27, 2023. It is now read-only.

Commit bdab070

Browse files
authored
fix: missing ignore Fatal in SetArg function (#594)
In my #589, I missed to add the skip line in switch case.
1 parent cf7e215 commit bdab070

File tree

2 files changed

+31
-8
lines changed

2 files changed

+31
-8
lines changed

gomock/call.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,8 @@ func (c *Call) SetArg(n int, value interface{}) *Call {
245245
// nothing to do
246246
case reflect.Slice:
247247
// nothing to do
248+
case reflect.Map:
249+
// nothing to do
248250
default:
249251
c.t.Fatalf("SetArg(%d, ...) referring to argument of non-pointer non-interface non-slice non-map type %v [%s]",
250252
n, at, c.origin)

gomock/controller_test.go

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,8 @@ func (s *Subject) ActOnTestStructMethod(arg TestStruct, arg1 int) int {
158158
return 0
159159
}
160160

161-
func (s *Subject) SetArgMethod(sliceArg []byte, ptrArg *int) {}
161+
func (s *Subject) SetArgMethod(sliceArg []byte, ptrArg *int, mapArg map[interface{}]interface{}) {}
162+
func (s *Subject) SetArgMethodInterface(sliceArg, ptrArg, mapArg interface{}) {}
162163

163164
func assertEqual(t *testing.T, expected interface{}, actual interface{}) {
164165
if !reflect.DeepEqual(expected, actual) {
@@ -560,29 +561,43 @@ func TestSetArgSlice(t *testing.T) {
560561

561562
var in = []byte{4, 5, 6}
562563
var set = []byte{1, 2, 3}
563-
ctrl.RecordCall(subject, "SetArgMethod", in, nil).SetArg(0, set)
564-
ctrl.Call(subject, "SetArgMethod", in, nil)
564+
ctrl.RecordCall(subject, "SetArgMethod", in, nil, nil).SetArg(0, set)
565+
ctrl.Call(subject, "SetArgMethod", in, nil, nil)
565566

566567
if !reflect.DeepEqual(in, set) {
567568
t.Error("Expected SetArg() to modify input slice argument")
568569
}
569570

571+
ctrl.RecordCall(subject, "SetArgMethodInterface", in, nil, nil).SetArg(0, set)
572+
ctrl.Call(subject, "SetArgMethodInterface", in, nil, nil)
573+
574+
if !reflect.DeepEqual(in, set) {
575+
t.Error("Expected SetArg() to modify input slice argument as interface{}")
576+
}
577+
570578
ctrl.Finish()
571579
}
572580

573581
func TestSetArgMap(t *testing.T) {
574582
_, ctrl := createFixtures(t)
575583
subject := new(Subject)
576584

577-
var in = map[interface{}]interface{}{"int": 1, "string": "random string", 1: "1"}
585+
var in = map[interface{}]interface{}{"int": 1, "string": "random string", 1: "1", 0: 0}
578586
var set = map[interface{}]interface{}{"int": 2, 1: "2", 2: 100}
579-
ctrl.RecordCall(subject, "SetArgMethod", in, nil).SetArg(0, set)
580-
ctrl.Call(subject, "SetArgMethod", in, nil)
587+
ctrl.RecordCall(subject, "SetArgMethod", nil, nil, in).SetArg(2, set)
588+
ctrl.Call(subject, "SetArgMethod", nil, nil, in)
581589

582590
if !reflect.DeepEqual(in, set) {
583591
t.Error("Expected SetArg() to modify input map argument")
584592
}
585593

594+
ctrl.RecordCall(subject, "SetArgMethodInterface", nil, nil, in).SetArg(2, set)
595+
ctrl.Call(subject, "SetArgMethodInterface", nil, nil, in)
596+
597+
if !reflect.DeepEqual(in, set) {
598+
t.Error("Expected SetArg() to modify input map argument as interface{}")
599+
}
600+
586601
ctrl.Finish()
587602
}
588603

@@ -592,13 +607,19 @@ func TestSetArgPtr(t *testing.T) {
592607

593608
var in int = 43
594609
const set = 42
595-
ctrl.RecordCall(subject, "SetArgMethod", nil, &in).SetArg(1, set)
596-
ctrl.Call(subject, "SetArgMethod", nil, &in)
610+
ctrl.RecordCall(subject, "SetArgMethod", nil, &in, nil).SetArg(1, set)
611+
ctrl.Call(subject, "SetArgMethod", nil, &in, nil)
597612

598613
if in != set {
599614
t.Error("Expected SetArg() to modify value pointed to by argument")
600615
}
601616

617+
ctrl.RecordCall(subject, "SetArgMethodInterface", nil, &in, nil).SetArg(1, set)
618+
ctrl.Call(subject, "SetArgMethodInterface", nil, &in, nil)
619+
620+
if in != set {
621+
t.Error("Expected SetArg() to modify value pointed to by argument as interface{}")
622+
}
602623
ctrl.Finish()
603624
}
604625

0 commit comments

Comments
 (0)