All checks were successful
Deploy to K8s / deploy (push) Successful in 10s
Adds cmd/parity/main.go: a standalone Go binary that GETs /api/version, /api/adults, /api/juniors, /api/payments from both the Python (:5001) and Go (:8080) backends, scrubs an allowlist (render_time.total, build_meta), and prints cmp.Diff for any remaining differences. Exits 0 on full match, 1 on diffs, 2 on fetch/parse errors — CI-friendly for M7.2. - go/cmd/parity/main.go: flags (-py, -go, -route, -timeout), fetch helper, allowlist scrubber (dotted-path aware), exit-code logic. - go/cmd/parity/scrub_test.go: 4 unit tests for the scrubber. - go/go.mod: promote github.com/google/go-cmp to direct dep. - Makefile: parity target + help entry. - Progress tracker: M5.4 ticked; milestone updated to M5 complete. - Plan archived to docs/plans/2026-05-07-2254-m5-4-parity-binary.md. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
package main
|
|
|
|
import "testing"
|
|
|
|
func TestScrubTopLevel(t *testing.T) {
|
|
m := map[string]any{
|
|
"build_meta": map[string]any{"tag": "v1"},
|
|
"other": "keep",
|
|
}
|
|
scrub(m, []string{"build_meta"})
|
|
if _, ok := m["build_meta"]; ok {
|
|
t.Error("expected build_meta to be removed")
|
|
}
|
|
if m["other"] != "keep" {
|
|
t.Error("expected other to be preserved")
|
|
}
|
|
}
|
|
|
|
func TestScrubNested(t *testing.T) {
|
|
m := map[string]any{
|
|
"render_time": map[string]any{
|
|
"total": "0.123",
|
|
"breakdown": "fetch:0.1s",
|
|
},
|
|
"other": "keep",
|
|
}
|
|
scrub(m, []string{"render_time.total"})
|
|
rt, ok := m["render_time"].(map[string]any)
|
|
if !ok {
|
|
t.Fatal("render_time should still be present")
|
|
}
|
|
if _, ok := rt["total"]; ok {
|
|
t.Error("expected render_time.total to be removed")
|
|
}
|
|
if rt["breakdown"] != "fetch:0.1s" {
|
|
t.Error("expected render_time.breakdown to be preserved")
|
|
}
|
|
if m["other"] != "keep" {
|
|
t.Error("expected other to be preserved")
|
|
}
|
|
}
|
|
|
|
func TestScrubMissingPath(t *testing.T) {
|
|
m := map[string]any{"foo": "bar"}
|
|
scrub(m, []string{"nonexistent", "render_time.total"})
|
|
if m["foo"] != "bar" {
|
|
t.Error("expected foo to be preserved")
|
|
}
|
|
}
|
|
|
|
func TestScrubNestedParentNotMap(t *testing.T) {
|
|
m := map[string]any{"render_time": "not-a-map"}
|
|
scrub(m, []string{"render_time.total"})
|
|
if m["render_time"] != "not-a-map" {
|
|
t.Error("expected render_time to be unchanged when it is not a map")
|
|
}
|
|
}
|