package buildstep import ( "encoding/json" "sync" "testing" stdio "git.novox.be/novox/mesh-sdk/go" ) // configWatch is a double of stdio.WatchConfig: it hands the value now at the start, as the runtime does, and a test // hands each change after with set. type configWatch struct { mu sync.Mutex value string handle func(stdio.ProvisionChange) error asked string } func (w *configWatch) watch(key string, handle func(stdio.ProvisionChange) error) error { w.mu.Lock() w.asked, w.handle = key, handle value := w.value w.mu.Unlock() return handle(stdio.ProvisionChange{Kind: "config", Key: key, Value: json.RawMessage(`"` + value + `"`)}) } func (w *configWatch) set(t *testing.T, value string) { t.Helper() w.mu.Lock() handle, key := w.handle, w.asked w.mu.Unlock() if handle == nil { t.Fatal("the puller watches no config value") } if err := handle(stdio.ProvisionChange{Kind: "config", Key: key, Value: json.RawMessage(`"` + value + `"`)}); err != nil { t.Fatal(err) } }