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  }