Skip to content

Commit 69595b2

Browse files
authored
Merge pull request #1011 from LandonTClipp/LandonTClipp/invalid_variadic
Fix variadic mock generation when `unroll-variadic: false`.
2 parents 0c734e8 + 3e8453f commit 69595b2

4 files changed

Lines changed: 139 additions & 1 deletion

File tree

.mockery_testify.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ packages:
3636
- structname: MockVariadicWithMultipleReturnsUnrollVariadic
3737
template-data:
3838
unroll-variadic: true
39+
- structname: MockVariadicWithMultipleReturns
40+
template-data:
41+
unroll-variadic: false
3942
RequesterVariadic:
4043
configs:
4144
- structname: MockRequesterVariadicOneArgument

internal/fixtures/mocks_testify_test_test.go

Lines changed: 95 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
"github.com/stretchr/testify/mock"
8+
)
9+
10+
func TestNoUnrollVariadic(t *testing.T) {
11+
m := NewMockVariadicWithMultipleReturns(t)
12+
m.EXPECT().Foo(mock.Anything, mock.Anything).RunAndReturn(
13+
func(one string, two ...string) (string, error) {
14+
var s string = one
15+
for _, t := range two {
16+
s += t
17+
}
18+
return s, nil
19+
},
20+
)
21+
ret, err := m.Foo("one", "two", "three")
22+
assert.NoError(t, err)
23+
assert.Equal(t, "onetwothree", ret)
24+
}
25+
26+
func TestUnrollVariadic(t *testing.T) {
27+
m := NewMockVariadicWithMultipleReturnsUnrollVariadic(t)
28+
m.EXPECT().Foo(mock.Anything, mock.Anything, mock.Anything).RunAndReturn(
29+
func(one string, two ...string) (string, error) {
30+
var s string = one
31+
for _, t := range two {
32+
s += t
33+
}
34+
return s, nil
35+
},
36+
)
37+
ret, err := m.Foo("one", "two", "three")
38+
assert.NoError(t, err)
39+
assert.Equal(t, "onetwothree", ret)
40+
}

internal/mock_testify.templ

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ func (_mock *{{$mock.StructName}}{{ $mock.TypeInstantiation }}) {{$method.Name}}
125125

126126
{{- if gt (len $method.Returns) 1 }}
127127
if returnFunc, ok := {{ $retArgs }}.Get(0).(func{{ $method.SignatureNoName }}); ok {
128-
return returnFunc({{- if (index $mock.TemplateData "unroll-variadic") }}{{ $method.ArgCallList }}{{- else }}{{ $method.ArgCallListNoEllipsis }}{{- end }})
128+
return returnFunc({{ $method.ArgCallList }})
129129
}
130130
{{- end }}
131131

0 commit comments

Comments
 (0)