github.com/Prakhar-Agarwal-byte/moby@v0.0.0-20231027092010-a14e3e8ab87e/integration/container/main_test.go (about) 1 package container // import "github.com/Prakhar-Agarwal-byte/moby/integration/container" 2 3 import ( 4 "context" 5 "os" 6 "testing" 7 8 "github.com/Prakhar-Agarwal-byte/moby/testutil" 9 "github.com/Prakhar-Agarwal-byte/moby/testutil/environment" 10 "go.opentelemetry.io/otel" 11 "go.opentelemetry.io/otel/codes" 12 ) 13 14 var ( 15 testEnv *environment.Execution 16 baseContext context.Context 17 ) 18 19 func TestMain(m *testing.M) { 20 var err error 21 shutdown := testutil.ConfigureTracing() 22 23 ctx, span := otel.Tracer("").Start(context.Background(), "integration/container/TestMain") 24 baseContext = ctx 25 26 testEnv, err = environment.New(ctx) 27 if err != nil { 28 span.SetStatus(codes.Error, "environment.New failed") 29 span.End() 30 shutdown(ctx) 31 panic(err) 32 } 33 err = environment.EnsureFrozenImagesLinux(ctx, testEnv) 34 if err != nil { 35 span.SetStatus(codes.Error, err.Error()) 36 span.End() 37 shutdown(ctx) 38 panic(err) 39 } 40 41 testEnv.Print() 42 code := m.Run() 43 if code != 0 { 44 span.SetStatus(codes.Error, "m.Run() exited with non-zero code") 45 } 46 span.End() 47 shutdown(ctx) 48 os.Exit(code) 49 } 50 51 func setupTest(t *testing.T) context.Context { 52 ctx := testutil.StartSpan(baseContext, t) 53 environment.ProtectAll(ctx, t, testEnv) 54 t.Cleanup(func() { testEnv.Clean(ctx, t) }) 55 return ctx 56 }