Skip to content

Commit

Permalink
Add log line for error in segment.
Browse files Browse the repository at this point in the history
  • Loading branch information
pwood committed May 14, 2022
1 parent e523ca3 commit f3ba562
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
7 changes: 7 additions & 0 deletions segment.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,17 @@ func (l Logger) Segment(pctx context.Context, message string, options ...Option)
// }
// }
//
//It is expected that errors in the returned function are actual problems, as it will log the error. It is not expected
//that segments will be used where the error is unimportant.
func (l Logger) SegmentFn(pctx context.Context, message string, options ...Option) func(func(ctx context.Context) error) error {
return func(f func(ctx context.Context) error) error {
c, done := l.Segment(pctx, message, options...)

err := f(c)
if err != nil {
l.Error(c, "segment errored", Err(err))
}

done()
return err
}
Expand Down
13 changes: 8 additions & 5 deletions segment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ func TestLogger_Segment(t *testing.T) {
func TestLogger_SegmentFn(t *testing.T) {
t.Run("starting a segment outputs a message, and closing a segment also outputs a message with fields indicating begin/end, verifies function is called and error returned", func(t *testing.T) {
mockImpl := MockImpl{}
mockImpl.On("Impl", mock.Anything, mock.Anything).Times(3)
mockImpl.On("Impl", mock.Anything, mock.Anything).Times(4)

expectedMessage := "message"
expectedInnerMessage := "inner message"
Expand All @@ -97,10 +97,11 @@ func TestLogger_SegmentFn(t *testing.T) {
assert.True(t, mockImpl.AssertExpectations(t))
assert.Equal(t, io.ErrUnexpectedEOF, err)

var capturedMessage [3]Message
var capturedMessage [4]Message
capturedMessage[0] = mockImpl.Calls[0].Arguments.Get(1).(Message)
capturedMessage[1] = mockImpl.Calls[1].Arguments.Get(1).(Message)
capturedMessage[2] = mockImpl.Calls[2].Arguments.Get(1).(Message)
capturedMessage[3] = mockImpl.Calls[3].Arguments.Get(1).(Message)

assert.Equal(t, expectedMessage, capturedMessage[0].Message)
assert.Equal(t, SegmentStartValue, capturedMessage[0].Data[SegmentField])
Expand All @@ -109,8 +110,10 @@ func TestLogger_SegmentFn(t *testing.T) {
assert.Equal(t, expectedInnerMessage, capturedMessage[1].Message)
assert.Equal(t, expectedValue, capturedMessage[1].Data[expectedKey])

assert.Equal(t, expectedMessage, capturedMessage[2].Message)
assert.Equal(t, SegmentEndValue, capturedMessage[2].Data[SegmentField])
assert.Equal(t, expectedValue, capturedMessage[2].Data[expectedKey])
assert.Contains(t, capturedMessage[2].Message, "segment errored")

assert.Equal(t, expectedMessage, capturedMessage[3].Message)
assert.Equal(t, SegmentEndValue, capturedMessage[3].Data[SegmentField])
assert.Equal(t, expectedValue, capturedMessage[3].Data[expectedKey])
})
}

0 comments on commit f3ba562

Please sign in to comment.