in pkg/approvaltest/approvals.go [99:140]
func rewriteDynamic(t testing.TB, srcs [][]byte, flattenedKeys bool, dynamic ...string) {
t.Helper()
// Fields generated by the server (e.g. observer.*)
// agent which may change between tests.
//
// Ignore their values in comparisons, but compare
// existence: either the field exists in both, or neither.
dynamic = append([]string{
"ecs.version",
"event.ingested",
"observer.ephemeral_id",
"observer.hostname",
"observer.id",
"observer.version",
}, dynamic...)
for i := range srcs {
for _, field := range dynamic {
if flattenedKeys {
field = strings.ReplaceAll(field, ".", "\\.")
}
existing := gjson.GetBytes(srcs[i], field)
if !existing.Exists() {
continue
}
var v interface{}
if existing.IsArray() {
v = []any{"dynamic"}
} else {
v = "dynamic"
}
var err error
srcs[i], err = sjson.SetBytes(srcs[i], field, v)
if err != nil {
t.Fatal(err)
}
}
}
}