github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/store/helpers_test.go (about) 1 package store 2 3 import ( 4 "context" 5 "testing" 6 "time" 7 8 "github.com/tilt-dev/tilt/pkg/model" 9 ) 10 11 func newState(manifests []model.Manifest) *EngineState { 12 ret := NewState() 13 for _, m := range manifests { 14 ret.ManifestTargets[m.Name] = NewManifestTarget(m) 15 ret.ManifestDefinitionOrder = append(ret.ManifestDefinitionOrder, m.Name) 16 } 17 18 return ret 19 } 20 21 type fakeSubscriber struct { 22 onChange chan onChangeCall 23 setupCount int 24 teardownCount int 25 } 26 27 func newFakeSubscriber() *fakeSubscriber { 28 return &fakeSubscriber{ 29 onChange: make(chan onChangeCall), 30 } 31 } 32 33 type onChangeCall struct { 34 done chan error 35 summary ChangeSummary 36 } 37 38 func (f *fakeSubscriber) assertOnChangeCount(t *testing.T, count int) { 39 t.Helper() 40 41 for i := 0; i < count; i++ { 42 f.assertOnChange(t) 43 } 44 45 select { 46 case <-time.After(50 * time.Millisecond): 47 return 48 49 case call := <-f.onChange: 50 close(call.done) 51 t.Fatalf("Expected only %d OnChange calls. Got: %d", count, count+1) 52 } 53 } 54 55 func (f *fakeSubscriber) assertOnChange(t *testing.T) { 56 t.Helper() 57 58 select { 59 case <-time.After(50 * time.Millisecond): 60 t.Fatalf("timed out waiting for subscriber.OnChange") 61 case call := <-f.onChange: 62 close(call.done) 63 } 64 } 65 66 func (f *fakeSubscriber) OnChange(ctx context.Context, st RStore, summary ChangeSummary) error { 67 call := onChangeCall{done: make(chan error), summary: summary} 68 f.onChange <- call 69 return <-call.done 70 } 71 72 func (f *fakeSubscriber) SetUp(ctx context.Context, st RStore) error { 73 f.setupCount++ 74 return nil 75 } 76 77 func (f *fakeSubscriber) TearDown(ctx context.Context) { 78 f.teardownCount++ 79 } 80 81 var _ SetUpper = &fakeSubscriber{} 82 var _ TearDowner = &fakeSubscriber{}