github.com/tilt-dev/tilt@v0.36.0/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 func LoggerCtx() context.Context { 17 return logger.WithLogger(context.Background(), logger.NewTestLogger(os.Stdout)) 18 } 19 20 // CtxAndAnalyticsForTest returns a context.Context suitable for use in tests (i.e. with 21 // logger & analytics attached), and the analytics it contains. 22 func CtxAndAnalyticsForTest() (context.Context, *analytics.MemoryAnalytics, *tiltanalytics.TiltAnalytics) { 23 ctx := LoggerCtx() 24 25 opter := tiltanalytics.NewFakeOpter(analytics.OptIn) 26 ma, ta := tiltanalytics.NewMemoryTiltAnalyticsForTest(opter) 27 ctx = tiltanalytics.WithAnalytics(ctx, ta) 28 29 return ctx, ma, ta 30 } 31 32 func ForkedCtxAndAnalyticsWithOpterForTest(w io.Writer, o tiltanalytics.AnalyticsOpter) (context.Context, *analytics.MemoryAnalytics, *tiltanalytics.TiltAnalytics) { 33 ctx := LoggerCtx() 34 ctx = logger.CtxWithForkedOutput(ctx, w) 35 36 ma, ta := tiltanalytics.NewMemoryTiltAnalyticsForTest(o) 37 ctx = tiltanalytics.WithAnalytics(ctx, ta) 38 39 return ctx, ma, ta 40 } 41 42 // CtxForTest returns a context.Context suitable for use in tests (i.e. with 43 // logger attached), and with all output being copied to `w` 44 func ForkedCtxAndAnalyticsForTest(w io.Writer) (context.Context, *analytics.MemoryAnalytics, *tiltanalytics.TiltAnalytics) { 45 opter := tiltanalytics.NewFakeOpter(analytics.OptIn) 46 return ForkedCtxAndAnalyticsWithOpterForTest(w, opter) 47 } 48 49 func FailOnNonCanceledErr(t testing.TB, err error, message string) { 50 if err != nil && err != context.Canceled { 51 fmt.Printf("%s: %v\n", message, err) 52 t.Error(err) 53 } 54 }