func rewriteDynamic()

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)
			}
		}
	}
}