Skip to content

Commit

Permalink
Add zaptest.observer.(*ObservedLogs).FilterLevelExact
Browse files Browse the repository at this point in the history
Method `observer.(*ObservedLogs).FilterLevelExact` allows consumers to select
entries logged at a given level, for testing.
  • Loading branch information
jkanywhere committed May 23, 2021
1 parent aefe3c4 commit 130ef27
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
7 changes: 7 additions & 0 deletions zaptest/observer/observer.go
Expand Up @@ -78,6 +78,13 @@ func (o *ObservedLogs) AllUntimed() []LoggedEntry {
return ret
}

// FilterLevelExact filters entries to those logged at exactly the given level.
func (o *ObservedLogs) FilterLevelExact(level zapcore.Level) *ObservedLogs {
return o.Filter(func(e LoggedEntry) bool {
return e.Level == level
})
}

// FilterMessage filters entries to those that have the specified message.
func (o *ObservedLogs) FilterMessage(msg string) *ObservedLogs {
return o.Filter(func(e LoggedEntry) bool {
Expand Down
13 changes: 13 additions & 0 deletions zaptest/observer/observer_test.go
Expand Up @@ -157,6 +157,14 @@ func TestFilters(t *testing.T) {
Entry: zapcore.Entry{Level: zap.InfoLevel, Message: "any slice"},
Context: []zapcore.Field{zap.Any("filterMe", []string{"b"})},
},
{
Entry: zapcore.Entry{Level: zap.WarnLevel, Message: "danger will robinson"},
Context: []zapcore.Field{zap.Int("b", 42)},
},
{
Entry: zapcore.Entry{Level: zap.ErrorLevel, Message: "warp core breach"},
Context: []zapcore.Field{zap.Int("b", 42)},
},
}

logger, sink := New(zap.InfoLevel)
Expand Down Expand Up @@ -232,6 +240,11 @@ func TestFilters(t *testing.T) {
return w
}(),
},
{
msg: "filter level",
filtered: sink.FilterLevelExact(zap.WarnLevel),
want: logs[9:10],
},
}

for _, tt := range tests {
Expand Down

0 comments on commit 130ef27

Please sign in to comment.