From 90b37e89000aa49dbbee253bbd58a111d840dcfd Mon Sep 17 00:00:00 2001 From: Zack Verham Date: Tue, 1 Feb 2022 17:50:23 -0500 Subject: [PATCH 1/3] fixing some issues with the fatal call in LoggerMock, and added some tests to validate --- pkg/rslog/rslogtest/mocks.go | 8 +++- pkg/rslog/rslogtest/mocks_test.go | 75 +++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 pkg/rslog/rslogtest/mocks_test.go diff --git a/pkg/rslog/rslogtest/mocks.go b/pkg/rslog/rslogtest/mocks.go index 500a4c9..e9a93db 100644 --- a/pkg/rslog/rslogtest/mocks.go +++ b/pkg/rslog/rslogtest/mocks.go @@ -40,7 +40,12 @@ type LoggerMock struct { // allowing to be called with any message and arguments func (m *LoggerMock) AllowAny(methods ...string) { for _, method := range methods { - m.On(method, mock.AnythingOfType("string"), mock.Anything) + //todo: I wonder if these should be types rather than string inputs + if method == "Fatal" { + m.On(method, mock.Anything) + } else { + m.On(method, mock.AnythingOfType("string"), mock.Anything) + } } } @@ -117,6 +122,7 @@ func (m *LoggerMock) Errorf(msg string, args ...interface{}) { } func (m *LoggerMock) Fatal(args ...interface{}) { + m.stringCalls = append(m.stringCalls, fmt.Sprint(args...)) m.Called(args) } diff --git a/pkg/rslog/rslogtest/mocks_test.go b/pkg/rslog/rslogtest/mocks_test.go new file mode 100644 index 0000000..f690bd9 --- /dev/null +++ b/pkg/rslog/rslogtest/mocks_test.go @@ -0,0 +1,75 @@ +package rslogtest + +import ( + "github.com/stretchr/testify/suite" + "testing" +) + +func TestPackage(t *testing.T) { + suite.Run(t, &MocksSuite{}) +} + +type MocksSuite struct { + suite.Suite +} + +func (s *MocksSuite) TestLoggerMockCallStack() { + + loggerMock := &LoggerMock{} + + debugfStr := "Debugf" + tracefStr := "Tracef" + infoStr := "Info" + infofStr := "Infof" + warnfStr := "Warnf" + errorfStr := "Errorf" + fatalfStr := "Fatalf" + fatalStr := "Fatal" + panicfStr := "Panicf" + + loggerMock.AllowAny(debugfStr, tracefStr, infoStr, infofStr, warnfStr, errorfStr, fatalfStr, fatalStr, panicfStr) + + s.Equal(0, len(loggerMock.Calls)) + + loggerMock.Debugf(debugfStr) + s.Equal(debugfStr, loggerMock.LastCall()) + s.Equal(debugfStr, loggerMock.Call(0)) + + loggerMock.Tracef(tracefStr) + s.Equal(tracefStr, loggerMock.LastCall()) + s.Equal(tracefStr, loggerMock.Call(1)) + + loggerMock.Info(infoStr) + s.Equal(infoStr, loggerMock.LastCall()) + s.Equal(infoStr, loggerMock.Call(2)) + + loggerMock.Infof(infofStr) + s.Equal(infofStr, loggerMock.LastCall()) + s.Equal(infofStr, loggerMock.Call(3)) + + loggerMock.Warnf(warnfStr) + s.Equal(warnfStr, loggerMock.LastCall()) + s.Equal(warnfStr, loggerMock.Call(4)) + + loggerMock.Errorf(errorfStr) + s.Equal(errorfStr, loggerMock.LastCall()) + s.Equal(errorfStr, loggerMock.Call(5)) + + loggerMock.Fatalf(fatalfStr) + s.Equal(fatalfStr, loggerMock.LastCall()) + s.Equal(fatalfStr, loggerMock.Call(6)) + + loggerMock.Fatal(fatalStr) + s.Equal(fatalStr, loggerMock.LastCall()) + s.Equal(fatalStr, loggerMock.Call(7)) + + loggerMock.Panicf(panicfStr) + s.Equal(panicfStr, loggerMock.LastCall()) + s.Equal(panicfStr, loggerMock.Call(8)) + + s.Equal(9, len(loggerMock.Calls)) + + loggerMock.Clear() + + s.Equal(0, len(loggerMock.Calls)) +} From c4bfa08bf769172809c7dab620db01cce6d4397f Mon Sep 17 00:00:00 2001 From: Zack Verham Date: Tue, 1 Feb 2022 18:05:39 -0500 Subject: [PATCH 2/3] adding copyright --- pkg/rslog/rslogtest/mocks_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/rslog/rslogtest/mocks_test.go b/pkg/rslog/rslogtest/mocks_test.go index f690bd9..871eaf0 100644 --- a/pkg/rslog/rslogtest/mocks_test.go +++ b/pkg/rslog/rslogtest/mocks_test.go @@ -1,5 +1,7 @@ package rslogtest +// Copyright (C) 2022 by RStudio, PBC. + import ( "github.com/stretchr/testify/suite" "testing" From 4a954f5bbf9dbf3b37882042ef70cb7ce873c225 Mon Sep 17 00:00:00 2001 From: Zack Verham Date: Tue, 1 Feb 2022 18:09:32 -0500 Subject: [PATCH 3/3] removing todo comment --- pkg/rslog/rslogtest/mocks.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/rslog/rslogtest/mocks.go b/pkg/rslog/rslogtest/mocks.go index e9a93db..05430fb 100644 --- a/pkg/rslog/rslogtest/mocks.go +++ b/pkg/rslog/rslogtest/mocks.go @@ -40,7 +40,6 @@ type LoggerMock struct { // allowing to be called with any message and arguments func (m *LoggerMock) AllowAny(methods ...string) { for _, method := range methods { - //todo: I wonder if these should be types rather than string inputs if method == "Fatal" { m.On(method, mock.Anything) } else {