MCPcopy
hub / github.com/uber-go/zap / TestCheckedEntryBefore

Function TestCheckedEntryBefore

zapcore/entry_test.go:151–212  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

149}
150
151func TestCheckedEntryBefore(t *testing.T) {
152 t.Run("nil is safe", func(t *testing.T) {
153 var ce *CheckedEntry
154 ce = ce.Before(Entry{Message: "hello"}, func(ent Entry, fields []Field) (Entry, []Field) {
155 ent.Message = "modified"
156 return ent, fields
157 })
158 assert.NotNil(t, ce)
159 assert.Equal(t, "hello", ce.Entry.Message)
160 })
161
162 t.Run("modifies entry and fields", func(t *testing.T) {
163 core := &recordingCore{}
164 var ce *CheckedEntry
165 ce = ce.AddCore(Entry{Message: "original"}, core)
166 ce = ce.Before(Entry{}, func(ent Entry, fields []Field) (Entry, []Field) {
167 ent.Message = "modified"
168 fields = append(fields, Field{Key: "added", Type: StringType, String: "value"})
169 return ent, fields
170 })
171 ce.Write(Field{Key: "initial", Type: StringType, String: "v"})
172
173 assert.Equal(t, "modified", core.entry.Message)
174 assert.Len(t, core.fields, 2)
175 assert.Equal(t, "initial", core.fields[0].Key)
176 assert.Equal(t, "added", core.fields[1].Key)
177 })
178
179 t.Run("multiple hooks chain in order", func(t *testing.T) {
180 core := &recordingCore{}
181 var ce *CheckedEntry
182 ce = ce.AddCore(Entry{Message: "start"}, core)
183 ce = ce.Before(Entry{}, func(ent Entry, fields []Field) (Entry, []Field) {
184 ent.Message = ent.Message + "-first"
185 return ent, fields
186 })
187 ce = ce.Before(Entry{}, func(ent Entry, fields []Field) (Entry, []Field) {
188 ent.Message = ent.Message + "-second"
189 return ent, fields
190 })
191 ce.Write()
192
193 assert.Equal(t, "start-first-second", core.entry.Message)
194 })
195
196 t.Run("hooks reset on pool reuse", func(t *testing.T) {
197 core := &recordingCore{}
198 var ce *CheckedEntry
199 ce = ce.AddCore(Entry{Message: "first"}, core)
200 ce = ce.Before(Entry{}, func(ent Entry, fields []Field) (Entry, []Field) {
201 ent.Message = "hooked"
202 return ent, fields
203 })
204 ce.Write()
205 assert.Equal(t, "hooked", core.entry.Message)
206
207 // Get a new entry from the pool — hooks should be cleared.
208 ce2 := getCheckedEntry()

Callers

nothing calls this directly

Calls 6

BeforeMethod · 0.95
AddCoreMethod · 0.95
WriteMethod · 0.95
getCheckedEntryFunction · 0.85
putCheckedEntryFunction · 0.85
LenMethod · 0.45

Tested by

no test coverage detected