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  }