package catalogue import ( "os" "path/filepath" "strings" "testing" ) // The collectors design 57 L2 moved (issue 681), composed with nothing handed: zsh's rc, triggerhappy's triggers and // power's after-wake moment, from the catalogue's real templates and its moved contributors' real items, are byte // for byte what the controller composed from the old forms before the move (testdata/l2-moved: templates/ and items/ // copied from mesh-catalog at the move, want/ composed at the feature branch before it). func l2Moved(t *testing.T, parts ...string) string { t.Helper() raw, err := os.ReadFile(filepath.Join(append([]string{"testdata", "l2-moved"}, parts...)...)) if err != nil { t.Fatal(err) } return string(raw) } func TestTheCollectorsL2MovedComposeAsBeforeWhereNothingIsHanded(t *testing.T) { // Each moved contributor, its items read back from its templates archive as the mesh holds them. items := map[string][]string{ "asus-zephyrus-g14": {"shell:after-wake:normal", "contribution:node-hotkeys:trigger"}, "claude-code": {"shell:zsh:normal"}, "mesh-cli": {"shell:zsh:normal"}, "powerlevel10k": {"shell:zsh:normal"}, "zsh-autosuggestions": {"shell:zsh:normal"}, "zsh-syntax-highlighting": {"shell:zsh:last"}, } var modules []Manifest for _, module := range sortedKeys(items) { m := Manifest{Module: module, Moved: true} for _, collection := range items[module] { m.Items = append(m.Items, Item{Collection: collection, Content: l2Moved(t, "items", module+"."+strings.ReplaceAll(collection, ":", "-"))}) } modules = append(modules, m) } for _, c := range []struct{ module, seat string }{{"zsh", LoginShellSeat}, {"triggerhappy", HotkeysSeat}, {"power", PowerSeat}} { holder := Manifest{Module: c.module, Moved: true, Claims: []Claim{{Name: c.seat}}} resource := map[string]any{"id": "file", "type": "file", "path": "/etc/" + c.module, "content": l2Moved(t, "templates", c.module)} var unplaced []string if err := contributionsInto(resource, holder, append([]Manifest{holder}, modules...), map[string]string{"name": "g14"}, Rendering{}, map[string]bool{}, &unplaced); err != nil { t.Fatalf("%s: %v", c.module, err) } if got, want := resource["content"], l2Moved(t, "want", c.module); got != want { t.Errorf("%s's file is not what the old forms made:\n%s\nwant:\n%s", c.module, got, want) } if len(unplaced) != 0 { t.Errorf("%s: unplaced %v", c.module, unplaced) } } }