feat(01-01): boot hello app and dispatch greeter:hello
- Add party plugin registry with Register-before-Boot activation - Add backpack, compass, bonfire, and pact capability interfaces - Add examples/hello with two compiled plugin modules
This commit is contained in:
56
party/registry_test.go
Normal file
56
party/registry_test.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package party
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.golem15.com/golem15/summercms/backpack"
|
||||
"git.golem15.com/golem15/summercms/compass"
|
||||
)
|
||||
|
||||
type tracePlugin struct {
|
||||
id string
|
||||
req []string
|
||||
log *[]string
|
||||
}
|
||||
|
||||
func (p *tracePlugin) ID() string { return p.id }
|
||||
func (p *tracePlugin) Requires() []string { return p.req }
|
||||
|
||||
func (p *tracePlugin) Register(*backpack.App) error {
|
||||
*p.log = append(*p.log, p.id+":register")
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *tracePlugin) Boot(*backpack.App) error {
|
||||
*p.log = append(*p.log, p.id+":boot")
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestActivateRunsAllRegisterBeforeAnyBoot(t *testing.T) {
|
||||
var log []string
|
||||
hello := &tracePlugin{id: "golem15.hello", log: &log}
|
||||
greeter := &tracePlugin{id: "golem15.greeter", req: []string{"golem15.hello"}, log: &log}
|
||||
app := backpack.New(&compass.Config{})
|
||||
|
||||
got, err := activate([]Plugin{greeter, hello}, app, []string{"golem15.greeter", "golem15.hello"})
|
||||
if err != nil {
|
||||
t.Fatalf("activate: %v", err)
|
||||
}
|
||||
if len(got) != 2 {
|
||||
t.Fatalf("got %d plugins, want 2", len(got))
|
||||
}
|
||||
if got[0].ID() != "golem15.hello" || got[1].ID() != "golem15.greeter" {
|
||||
t.Fatalf("order = %s, %s", got[0].ID(), got[1].ID())
|
||||
}
|
||||
|
||||
want := []string{
|
||||
"golem15.hello:register",
|
||||
"golem15.greeter:register",
|
||||
"golem15.hello:boot",
|
||||
"golem15.greeter:boot",
|
||||
}
|
||||
if strings.Join(log, ",") != strings.Join(want, ",") {
|
||||
t.Fatalf("lifecycle = %v, want %v", log, want)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user