Skip to content
quarry Artifact [45bda92a8b]
Login

Artifact [45bda92a8b]

Artifact 45bda92a8b084188e294467f9a7c03898ef5bfd70d5b4071d3db392a1f2a9ac9:


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