package oltp
import (
"testing"
"time"
)
// A push admitted onto a tracking store is a check-in the upstream
// lacks. The count and the newest hash are kept per mirror, and
// detaching — the fork made official — clears them (5d40f151).
func TestAMirrorCountsCheckinsItsUpstreamLacks(t *testing.T) {
d := openTest(t)
if err := d.SetMirror("w", "https://example.invalid/w", time.Hour); err != nil {
t.Fatal(err)
}
for _, h := range []string{"aaaa1111", "bbbb2222", "cccc3333"} {
if err := d.MirrorDiverged("w", h); err != nil {
t.Fatal(err)
}
}
m, ok, err := d.MirrorFor("w")
if err != nil || !ok {
t.Fatalf("MirrorFor: %v %v", ok, err)
}
if m.Diverged != 3 || m.DivergedLast != "cccc3333" {
t.Fatalf("FAIL: diverged=%d last=%q, want 3 / cccc3333", m.Diverged, m.DivergedLast)
}
if err := d.DetachMirror("w"); err != nil {
t.Fatal(err)
}
m, _, _ = d.MirrorFor("w")
if m.Diverged != 0 || m.DivergedLast != "" {
t.Fatalf("FAIL: detach kept diverged=%d last=%q", m.Diverged, m.DivergedLast)
}
t.Log("ok: three pushes counted, newest named, detach clears")
}