61 lines
2.4 KiB
Go
61 lines
2.4 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|