From 3ec18442500b89616551ba68a27d4672d885d70c Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Mon, 29 Aug 2022 17:43:58 +0200 Subject: [PATCH] feat: generates returnsFn on function without args --- syrup.go | 5 +- testdata/src/a/a.go | 1 + testdata/src/a/mock_gen_test.go | 172 +++++++++++++++++++++++ testdata/src/a/mock_gen_test.go.golden | 172 +++++++++++++++++++++++ testdata/src/b/c/mock_gen_test.go | 18 +++ testdata/src/b/c/mock_gen_test.go.golden | 18 +++ 6 files changed, 382 insertions(+), 4 deletions(-) diff --git a/syrup.go b/syrup.go index 58d8224..806990f 100644 --- a/syrup.go +++ b/syrup.go @@ -208,7 +208,7 @@ func (s Syrup) mockedMethod(writer io.Writer) error { } func (s Syrup) writeReturnsFnCaller(w *Writer, argNames []string, params, results *types.Tuple) { - if len(argNames) > 0 && results.Len() > 0 { + if results.Len() > 0 { w.Println() w.Printf("\tif _rf, ok := _ret.Get(0).(%s); ok {\n", s.createFuncSignature(params, results)) w.Printf("\t\treturn _rf(%s", strings.Join(argNames, ", ")) @@ -453,9 +453,6 @@ func (s Syrup) returnsFn(writer io.Writer) error { } params := s.Signature.Params() - if params.Len() < 1 { - return nil - } structBaseName := strcase.ToGoCamel(s.InterfaceName) diff --git a/testdata/src/a/a.go b/testdata/src/a/a.go index 0181756..27eaa9d 100644 --- a/testdata/src/a/a.go +++ b/testdata/src/a/a.go @@ -13,6 +13,7 @@ type Pineapple interface { World() string Goo() (string, int, Water) Coo(context.Context, string, Water) Water + Noo(context.Context) string } type Coconut interface { diff --git a/testdata/src/a/mock_gen_test.go b/testdata/src/a/mock_gen_test.go index 23ee95b..56aee9f 100644 --- a/testdata/src/a/mock_gen_test.go +++ b/testdata/src/a/mock_gen_test.go @@ -125,6 +125,10 @@ func (_c *pineappleCooCall) OnHello(bar Water) *pineappleHelloCall { return _c.Parent.OnHello(bar) } +func (_c *pineappleCooCall) OnNoo() *pineappleNooCall { + return _c.Parent.OnNoo() +} + func (_c *pineappleCooCall) OnWorld() *pineappleWorldCall { return _c.Parent.OnWorld() } @@ -141,6 +145,10 @@ func (_c *pineappleCooCall) OnHelloRaw(bar interface{}) *pineappleHelloCall { return _c.Parent.OnHelloRaw(bar) } +func (_c *pineappleCooCall) OnNooRaw() *pineappleNooCall { + return _c.Parent.OnNooRaw() +} + func (_c *pineappleCooCall) OnWorldRaw() *pineappleWorldCall { return _c.Parent.OnWorldRaw() } @@ -148,6 +156,10 @@ func (_c *pineappleCooCall) OnWorldRaw() *pineappleWorldCall { func (_m *pineappleMock) Goo() (string, int, Water) { _ret := _m.Called() + if _rf, ok := _ret.Get(0).(func() (string, int, Water)); ok { + return _rf() + } + _ra0 := _ret.String(0) _rb1 := _ret.Int(1) _rc2, _ := _ret.Get(2).(Water) @@ -213,6 +225,11 @@ func (_c *pineappleGooCall) TypedReturns(a string, b int, c Water) *pineappleGoo return _c } +func (_c *pineappleGooCall) ReturnsFn(fn func() (string, int, Water)) *pineappleGooCall { + _c.Call = _c.Return(fn) + return _c +} + func (_c *pineappleGooCall) TypedRun(fn func()) *pineappleGooCall { _c.Call = _c.Call.Run(func(args mock.Arguments) { fn() @@ -232,6 +249,10 @@ func (_c *pineappleGooCall) OnHello(bar Water) *pineappleHelloCall { return _c.Parent.OnHello(bar) } +func (_c *pineappleGooCall) OnNoo() *pineappleNooCall { + return _c.Parent.OnNoo() +} + func (_c *pineappleGooCall) OnWorld() *pineappleWorldCall { return _c.Parent.OnWorld() } @@ -248,6 +269,10 @@ func (_c *pineappleGooCall) OnHelloRaw(bar interface{}) *pineappleHelloCall { return _c.Parent.OnHelloRaw(bar) } +func (_c *pineappleGooCall) OnNooRaw() *pineappleNooCall { + return _c.Parent.OnNooRaw() +} + func (_c *pineappleGooCall) OnWorldRaw() *pineappleWorldCall { return _c.Parent.OnWorldRaw() } @@ -347,6 +372,10 @@ func (_c *pineappleHelloCall) OnHello(bar Water) *pineappleHelloCall { return _c.Parent.OnHello(bar) } +func (_c *pineappleHelloCall) OnNoo() *pineappleNooCall { + return _c.Parent.OnNoo() +} + func (_c *pineappleHelloCall) OnWorld() *pineappleWorldCall { return _c.Parent.OnWorld() } @@ -363,13 +392,143 @@ func (_c *pineappleHelloCall) OnHelloRaw(bar interface{}) *pineappleHelloCall { return _c.Parent.OnHelloRaw(bar) } +func (_c *pineappleHelloCall) OnNooRaw() *pineappleNooCall { + return _c.Parent.OnNooRaw() +} + func (_c *pineappleHelloCall) OnWorldRaw() *pineappleWorldCall { return _c.Parent.OnWorldRaw() } +func (_m *pineappleMock) Noo(_ context.Context) string { + _ret := _m.Called() + + if _rf, ok := _ret.Get(0).(func() string); ok { + return _rf() + } + + _ra0 := _ret.String(0) + + return _ra0 +} + +func (_m *pineappleMock) OnNoo() *pineappleNooCall { + return &pineappleNooCall{Call: _m.Mock.On("Noo"), Parent: _m} +} + +func (_m *pineappleMock) OnNooRaw() *pineappleNooCall { + return &pineappleNooCall{Call: _m.Mock.On("Noo"), Parent: _m} +} + +type pineappleNooCall struct { + *mock.Call + Parent *pineappleMock +} + +func (_c *pineappleNooCall) Panic(msg string) *pineappleNooCall { + _c.Call = _c.Call.Panic(msg) + return _c +} + +func (_c *pineappleNooCall) Once() *pineappleNooCall { + _c.Call = _c.Call.Once() + return _c +} + +func (_c *pineappleNooCall) Twice() *pineappleNooCall { + _c.Call = _c.Call.Twice() + return _c +} + +func (_c *pineappleNooCall) Times(i int) *pineappleNooCall { + _c.Call = _c.Call.Times(i) + return _c +} + +func (_c *pineappleNooCall) WaitUntil(w <-chan time.Time) *pineappleNooCall { + _c.Call = _c.Call.WaitUntil(w) + return _c +} + +func (_c *pineappleNooCall) After(d time.Duration) *pineappleNooCall { + _c.Call = _c.Call.After(d) + return _c +} + +func (_c *pineappleNooCall) Run(fn func(args mock.Arguments)) *pineappleNooCall { + _c.Call = _c.Call.Run(fn) + return _c +} + +func (_c *pineappleNooCall) Maybe() *pineappleNooCall { + _c.Call = _c.Call.Maybe() + return _c +} + +func (_c *pineappleNooCall) TypedReturns(a string) *pineappleNooCall { + _c.Call = _c.Return(a) + return _c +} + +func (_c *pineappleNooCall) ReturnsFn(fn func() string) *pineappleNooCall { + _c.Call = _c.Return(fn) + return _c +} + +func (_c *pineappleNooCall) TypedRun(fn func()) *pineappleNooCall { + _c.Call = _c.Call.Run(func(args mock.Arguments) { + fn() + }) + return _c +} + +func (_c *pineappleNooCall) OnCoo(bParam string, cParam Water) *pineappleCooCall { + return _c.Parent.OnCoo(bParam, cParam) +} + +func (_c *pineappleNooCall) OnGoo() *pineappleGooCall { + return _c.Parent.OnGoo() +} + +func (_c *pineappleNooCall) OnHello(bar Water) *pineappleHelloCall { + return _c.Parent.OnHello(bar) +} + +func (_c *pineappleNooCall) OnNoo() *pineappleNooCall { + return _c.Parent.OnNoo() +} + +func (_c *pineappleNooCall) OnWorld() *pineappleWorldCall { + return _c.Parent.OnWorld() +} + +func (_c *pineappleNooCall) OnCooRaw(bParam interface{}, cParam interface{}) *pineappleCooCall { + return _c.Parent.OnCooRaw(bParam, cParam) +} + +func (_c *pineappleNooCall) OnGooRaw() *pineappleGooCall { + return _c.Parent.OnGooRaw() +} + +func (_c *pineappleNooCall) OnHelloRaw(bar interface{}) *pineappleHelloCall { + return _c.Parent.OnHelloRaw(bar) +} + +func (_c *pineappleNooCall) OnNooRaw() *pineappleNooCall { + return _c.Parent.OnNooRaw() +} + +func (_c *pineappleNooCall) OnWorldRaw() *pineappleWorldCall { + return _c.Parent.OnWorldRaw() +} + func (_m *pineappleMock) World() string { _ret := _m.Called() + if _rf, ok := _ret.Get(0).(func() string); ok { + return _rf() + } + _ra0 := _ret.String(0) return _ra0 @@ -433,6 +592,11 @@ func (_c *pineappleWorldCall) TypedReturns(a string) *pineappleWorldCall { return _c } +func (_c *pineappleWorldCall) ReturnsFn(fn func() string) *pineappleWorldCall { + _c.Call = _c.Return(fn) + return _c +} + func (_c *pineappleWorldCall) TypedRun(fn func()) *pineappleWorldCall { _c.Call = _c.Call.Run(func(args mock.Arguments) { fn() @@ -452,6 +616,10 @@ func (_c *pineappleWorldCall) OnHello(bar Water) *pineappleHelloCall { return _c.Parent.OnHello(bar) } +func (_c *pineappleWorldCall) OnNoo() *pineappleNooCall { + return _c.Parent.OnNoo() +} + func (_c *pineappleWorldCall) OnWorld() *pineappleWorldCall { return _c.Parent.OnWorld() } @@ -468,6 +636,10 @@ func (_c *pineappleWorldCall) OnHelloRaw(bar interface{}) *pineappleHelloCall { return _c.Parent.OnHelloRaw(bar) } +func (_c *pineappleWorldCall) OnNooRaw() *pineappleNooCall { + return _c.Parent.OnNooRaw() +} + func (_c *pineappleWorldCall) OnWorldRaw() *pineappleWorldCall { return _c.Parent.OnWorldRaw() } diff --git a/testdata/src/a/mock_gen_test.go.golden b/testdata/src/a/mock_gen_test.go.golden index 23ee95b..56aee9f 100644 --- a/testdata/src/a/mock_gen_test.go.golden +++ b/testdata/src/a/mock_gen_test.go.golden @@ -125,6 +125,10 @@ func (_c *pineappleCooCall) OnHello(bar Water) *pineappleHelloCall { return _c.Parent.OnHello(bar) } +func (_c *pineappleCooCall) OnNoo() *pineappleNooCall { + return _c.Parent.OnNoo() +} + func (_c *pineappleCooCall) OnWorld() *pineappleWorldCall { return _c.Parent.OnWorld() } @@ -141,6 +145,10 @@ func (_c *pineappleCooCall) OnHelloRaw(bar interface{}) *pineappleHelloCall { return _c.Parent.OnHelloRaw(bar) } +func (_c *pineappleCooCall) OnNooRaw() *pineappleNooCall { + return _c.Parent.OnNooRaw() +} + func (_c *pineappleCooCall) OnWorldRaw() *pineappleWorldCall { return _c.Parent.OnWorldRaw() } @@ -148,6 +156,10 @@ func (_c *pineappleCooCall) OnWorldRaw() *pineappleWorldCall { func (_m *pineappleMock) Goo() (string, int, Water) { _ret := _m.Called() + if _rf, ok := _ret.Get(0).(func() (string, int, Water)); ok { + return _rf() + } + _ra0 := _ret.String(0) _rb1 := _ret.Int(1) _rc2, _ := _ret.Get(2).(Water) @@ -213,6 +225,11 @@ func (_c *pineappleGooCall) TypedReturns(a string, b int, c Water) *pineappleGoo return _c } +func (_c *pineappleGooCall) ReturnsFn(fn func() (string, int, Water)) *pineappleGooCall { + _c.Call = _c.Return(fn) + return _c +} + func (_c *pineappleGooCall) TypedRun(fn func()) *pineappleGooCall { _c.Call = _c.Call.Run(func(args mock.Arguments) { fn() @@ -232,6 +249,10 @@ func (_c *pineappleGooCall) OnHello(bar Water) *pineappleHelloCall { return _c.Parent.OnHello(bar) } +func (_c *pineappleGooCall) OnNoo() *pineappleNooCall { + return _c.Parent.OnNoo() +} + func (_c *pineappleGooCall) OnWorld() *pineappleWorldCall { return _c.Parent.OnWorld() } @@ -248,6 +269,10 @@ func (_c *pineappleGooCall) OnHelloRaw(bar interface{}) *pineappleHelloCall { return _c.Parent.OnHelloRaw(bar) } +func (_c *pineappleGooCall) OnNooRaw() *pineappleNooCall { + return _c.Parent.OnNooRaw() +} + func (_c *pineappleGooCall) OnWorldRaw() *pineappleWorldCall { return _c.Parent.OnWorldRaw() } @@ -347,6 +372,10 @@ func (_c *pineappleHelloCall) OnHello(bar Water) *pineappleHelloCall { return _c.Parent.OnHello(bar) } +func (_c *pineappleHelloCall) OnNoo() *pineappleNooCall { + return _c.Parent.OnNoo() +} + func (_c *pineappleHelloCall) OnWorld() *pineappleWorldCall { return _c.Parent.OnWorld() } @@ -363,13 +392,143 @@ func (_c *pineappleHelloCall) OnHelloRaw(bar interface{}) *pineappleHelloCall { return _c.Parent.OnHelloRaw(bar) } +func (_c *pineappleHelloCall) OnNooRaw() *pineappleNooCall { + return _c.Parent.OnNooRaw() +} + func (_c *pineappleHelloCall) OnWorldRaw() *pineappleWorldCall { return _c.Parent.OnWorldRaw() } +func (_m *pineappleMock) Noo(_ context.Context) string { + _ret := _m.Called() + + if _rf, ok := _ret.Get(0).(func() string); ok { + return _rf() + } + + _ra0 := _ret.String(0) + + return _ra0 +} + +func (_m *pineappleMock) OnNoo() *pineappleNooCall { + return &pineappleNooCall{Call: _m.Mock.On("Noo"), Parent: _m} +} + +func (_m *pineappleMock) OnNooRaw() *pineappleNooCall { + return &pineappleNooCall{Call: _m.Mock.On("Noo"), Parent: _m} +} + +type pineappleNooCall struct { + *mock.Call + Parent *pineappleMock +} + +func (_c *pineappleNooCall) Panic(msg string) *pineappleNooCall { + _c.Call = _c.Call.Panic(msg) + return _c +} + +func (_c *pineappleNooCall) Once() *pineappleNooCall { + _c.Call = _c.Call.Once() + return _c +} + +func (_c *pineappleNooCall) Twice() *pineappleNooCall { + _c.Call = _c.Call.Twice() + return _c +} + +func (_c *pineappleNooCall) Times(i int) *pineappleNooCall { + _c.Call = _c.Call.Times(i) + return _c +} + +func (_c *pineappleNooCall) WaitUntil(w <-chan time.Time) *pineappleNooCall { + _c.Call = _c.Call.WaitUntil(w) + return _c +} + +func (_c *pineappleNooCall) After(d time.Duration) *pineappleNooCall { + _c.Call = _c.Call.After(d) + return _c +} + +func (_c *pineappleNooCall) Run(fn func(args mock.Arguments)) *pineappleNooCall { + _c.Call = _c.Call.Run(fn) + return _c +} + +func (_c *pineappleNooCall) Maybe() *pineappleNooCall { + _c.Call = _c.Call.Maybe() + return _c +} + +func (_c *pineappleNooCall) TypedReturns(a string) *pineappleNooCall { + _c.Call = _c.Return(a) + return _c +} + +func (_c *pineappleNooCall) ReturnsFn(fn func() string) *pineappleNooCall { + _c.Call = _c.Return(fn) + return _c +} + +func (_c *pineappleNooCall) TypedRun(fn func()) *pineappleNooCall { + _c.Call = _c.Call.Run(func(args mock.Arguments) { + fn() + }) + return _c +} + +func (_c *pineappleNooCall) OnCoo(bParam string, cParam Water) *pineappleCooCall { + return _c.Parent.OnCoo(bParam, cParam) +} + +func (_c *pineappleNooCall) OnGoo() *pineappleGooCall { + return _c.Parent.OnGoo() +} + +func (_c *pineappleNooCall) OnHello(bar Water) *pineappleHelloCall { + return _c.Parent.OnHello(bar) +} + +func (_c *pineappleNooCall) OnNoo() *pineappleNooCall { + return _c.Parent.OnNoo() +} + +func (_c *pineappleNooCall) OnWorld() *pineappleWorldCall { + return _c.Parent.OnWorld() +} + +func (_c *pineappleNooCall) OnCooRaw(bParam interface{}, cParam interface{}) *pineappleCooCall { + return _c.Parent.OnCooRaw(bParam, cParam) +} + +func (_c *pineappleNooCall) OnGooRaw() *pineappleGooCall { + return _c.Parent.OnGooRaw() +} + +func (_c *pineappleNooCall) OnHelloRaw(bar interface{}) *pineappleHelloCall { + return _c.Parent.OnHelloRaw(bar) +} + +func (_c *pineappleNooCall) OnNooRaw() *pineappleNooCall { + return _c.Parent.OnNooRaw() +} + +func (_c *pineappleNooCall) OnWorldRaw() *pineappleWorldCall { + return _c.Parent.OnWorldRaw() +} + func (_m *pineappleMock) World() string { _ret := _m.Called() + if _rf, ok := _ret.Get(0).(func() string); ok { + return _rf() + } + _ra0 := _ret.String(0) return _ra0 @@ -433,6 +592,11 @@ func (_c *pineappleWorldCall) TypedReturns(a string) *pineappleWorldCall { return _c } +func (_c *pineappleWorldCall) ReturnsFn(fn func() string) *pineappleWorldCall { + _c.Call = _c.Return(fn) + return _c +} + func (_c *pineappleWorldCall) TypedRun(fn func()) *pineappleWorldCall { _c.Call = _c.Call.Run(func(args mock.Arguments) { fn() @@ -452,6 +616,10 @@ func (_c *pineappleWorldCall) OnHello(bar Water) *pineappleHelloCall { return _c.Parent.OnHello(bar) } +func (_c *pineappleWorldCall) OnNoo() *pineappleNooCall { + return _c.Parent.OnNoo() +} + func (_c *pineappleWorldCall) OnWorld() *pineappleWorldCall { return _c.Parent.OnWorld() } @@ -468,6 +636,10 @@ func (_c *pineappleWorldCall) OnHelloRaw(bar interface{}) *pineappleHelloCall { return _c.Parent.OnHelloRaw(bar) } +func (_c *pineappleWorldCall) OnNooRaw() *pineappleNooCall { + return _c.Parent.OnNooRaw() +} + func (_c *pineappleWorldCall) OnWorldRaw() *pineappleWorldCall { return _c.Parent.OnWorldRaw() } diff --git a/testdata/src/b/c/mock_gen_test.go b/testdata/src/b/c/mock_gen_test.go index f0f0f65..0de56fd 100644 --- a/testdata/src/b/c/mock_gen_test.go +++ b/testdata/src/b/c/mock_gen_test.go @@ -146,6 +146,10 @@ func (_c *pineappleCooCall) OnWorldRaw() *pineappleWorldCall { func (_m *pineappleMock) Goo() (string, int, Water) { _ret := _m.Called() + if _rf, ok := _ret.Get(0).(func() (string, int, Water)); ok { + return _rf() + } + _ra0 := _ret.String(0) _rb1 := _ret.Int(1) _rc2, _ := _ret.Get(2).(Water) @@ -211,6 +215,11 @@ func (_c *pineappleGooCall) TypedReturns(a string, b int, c Water) *pineappleGoo return _c } +func (_c *pineappleGooCall) ReturnsFn(fn func() (string, int, Water)) *pineappleGooCall { + _c.Call = _c.Return(fn) + return _c +} + func (_c *pineappleGooCall) TypedRun(fn func()) *pineappleGooCall { _c.Call = _c.Call.Run(func(args mock.Arguments) { fn() @@ -368,6 +377,10 @@ func (_c *pineappleHelloCall) OnWorldRaw() *pineappleWorldCall { func (_m *pineappleMock) World() string { _ret := _m.Called() + if _rf, ok := _ret.Get(0).(func() string); ok { + return _rf() + } + _ra0 := _ret.String(0) return _ra0 @@ -431,6 +444,11 @@ func (_c *pineappleWorldCall) TypedReturns(a string) *pineappleWorldCall { return _c } +func (_c *pineappleWorldCall) ReturnsFn(fn func() string) *pineappleWorldCall { + _c.Call = _c.Return(fn) + return _c +} + func (_c *pineappleWorldCall) TypedRun(fn func()) *pineappleWorldCall { _c.Call = _c.Call.Run(func(args mock.Arguments) { fn() diff --git a/testdata/src/b/c/mock_gen_test.go.golden b/testdata/src/b/c/mock_gen_test.go.golden index f0f0f65..0de56fd 100644 --- a/testdata/src/b/c/mock_gen_test.go.golden +++ b/testdata/src/b/c/mock_gen_test.go.golden @@ -146,6 +146,10 @@ func (_c *pineappleCooCall) OnWorldRaw() *pineappleWorldCall { func (_m *pineappleMock) Goo() (string, int, Water) { _ret := _m.Called() + if _rf, ok := _ret.Get(0).(func() (string, int, Water)); ok { + return _rf() + } + _ra0 := _ret.String(0) _rb1 := _ret.Int(1) _rc2, _ := _ret.Get(2).(Water) @@ -211,6 +215,11 @@ func (_c *pineappleGooCall) TypedReturns(a string, b int, c Water) *pineappleGoo return _c } +func (_c *pineappleGooCall) ReturnsFn(fn func() (string, int, Water)) *pineappleGooCall { + _c.Call = _c.Return(fn) + return _c +} + func (_c *pineappleGooCall) TypedRun(fn func()) *pineappleGooCall { _c.Call = _c.Call.Run(func(args mock.Arguments) { fn() @@ -368,6 +377,10 @@ func (_c *pineappleHelloCall) OnWorldRaw() *pineappleWorldCall { func (_m *pineappleMock) World() string { _ret := _m.Called() + if _rf, ok := _ret.Get(0).(func() string); ok { + return _rf() + } + _ra0 := _ret.String(0) return _ra0 @@ -431,6 +444,11 @@ func (_c *pineappleWorldCall) TypedReturns(a string) *pineappleWorldCall { return _c } +func (_c *pineappleWorldCall) ReturnsFn(fn func() string) *pineappleWorldCall { + _c.Call = _c.Return(fn) + return _c +} + func (_c *pineappleWorldCall) TypedRun(fn func()) *pineappleWorldCall { _c.Call = _c.Call.Run(func(args mock.Arguments) { fn()