github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/testutils/context.go (about) 1 package testutils 2 3 import ( 4 "context" 5 "fmt" 6 "io" 7 "os" 8 "testing" 9 10 "github.com/tilt-dev/wmclient/pkg/analytics" 11 12 tiltanalytics "github.com/tilt-dev/tilt/internal/analytics" 13 "github.com/tilt-dev/tilt/pkg/logger" 14 ) 15 16 // CtxAndAnalyticsForTest returns a context.Context suitable for use in tests (i.e. with 17 // logger & analytics attached), and the analytics it contains. 18 func CtxAndAnalyticsForTest() (context.Context, *analytics.MemoryAnalytics, *tiltanalytics.TiltAnalytics) { 19 ctx := logger.WithLogger(context.Background(), logger.NewTestLogger(os.Stdout)) 20 21 opter := tiltanalytics.NewFakeOpter(analytics.OptIn) 22 ma, ta := tiltanalytics.NewMemoryTiltAnalyticsForTest(opter) 23 ctx = tiltanalytics.WithAnalytics(ctx, ta) 24 25 return ctx, ma, ta 26 } 27 28 func ForkedCtxAndAnalyticsWithOpterForTest(w io.Writer, o tiltanalytics.AnalyticsOpter) (context.Context, *analytics.MemoryAnalytics, *tiltanalytics.TiltAnalytics) { 29 ctx := logger.WithLogger(context.Background(), logger.NewTestLogger(os.Stdout)) 30 ctx = logger.CtxWithForkedOutput(ctx, w) 31 32 ma, ta := tiltanalytics.NewMemoryTiltAnalyticsForTest(o) 33 ctx = tiltanalytics.WithAnalytics(ctx, ta) 34 35 return ctx, ma, ta 36 } 37 38 // CtxForTest returns a context.Context suitable for use in tests (i.e. with 39 // logger attached), and with all output being copied to `w` 40 func ForkedCtxAndAnalyticsForTest(w io.Writer) (context.Context, *analytics.MemoryAnalytics, *tiltanalytics.TiltAnalytics) { 41 opter := tiltanalytics.NewFakeOpter(analytics.OptIn) 42 return ForkedCtxAndAnalyticsWithOpterForTest(w, opter) 43 } 44 45 func FailOnNonCanceledErr(t testing.TB, err error, message string) { 46 if err != nil && err != context.Canceled { 47 fmt.Printf("%s: %v\n", message, err) 48 t.Error(err) 49 } 50 }