package main import ( "sort" "testing" ) // TestRegistryOrder locks the run order of all registered checks. // // main() runs checks sorted by Seq, so the Seq values ARE the contract for // output order. The golden characterization test cannot guard every position: // the plugin-discovery check ("10disc") prints nothing when no plugin roots are // scanned (as in the golden fixtures), so a Seq mistake that reordered it past // Check 10b would slip through golden silently. Assert the full canonical order // here, and reject duplicate Seq values (which would make order nondeterministic). func TestRegistryOrder(t *testing.T) { want := []string{ "1", "2", "2b", "2c", "2d", "2e", "2f", "3", "3b", "4", "5", "6", "7", "8", "9", "10", "10b", "10disc", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "28", "29", } ordered := make([]Check, len(registry)) copy(ordered, registry) sort.Slice(ordered, func(i, j int) bool { return ordered[i].Seq < ordered[j].Seq }) if len(ordered) != len(want) { t.Fatalf("registry has %d checks, want %d", len(ordered), len(want)) } for i, c := range ordered { if c.ID != want[i] { t.Errorf("position %d: got check %q (Seq %d), want %q", i, c.ID, c.Seq, want[i]) } } seen := map[int]string{} for _, c := range registry { if prev, ok := seen[c.Seq]; ok { t.Errorf("duplicate Seq %d on checks %q and %q", c.Seq, prev, c.ID) } seen[c.Seq] = c.ID } }