github.com/octohelm/wagon@v0.0.0-20240308040401-88662650dc0b/pkg/engine/daggerutil/engine_test.go (about) 1 package daggerutil 2 3 import ( 4 "fmt" 5 "github.com/vektah/gqlparser/v2/gqlerror" 6 "os" 7 "testing" 8 "time" 9 10 "dagger.io/dagger" 11 "github.com/go-courier/logr" 12 "github.com/go-courier/logr/slog" 13 "github.com/pkg/errors" 14 "golang.org/x/net/context" 15 ) 16 17 func TestDebugDagger(t *testing.T) { 18 runnerHost := os.Getenv("BUILDKIT_HOST") 19 20 if runnerHost == "" { 21 t.Skip() 22 } 23 24 t.Run(fmt.Sprintf("With"), func(t *testing.T) { 25 _ = os.Chdir("../../..") 26 27 ctx := logr.WithLogger(context.Background(), slog.Logger(slog.Default())) 28 29 engineConn, release, _ := ConnectEngine( 30 ctx, 31 WithRunnerHost(""), 32 ) 33 defer release() 34 35 client, err := dagger.Connect(ctx, dagger.WithConn(engineConn)) 36 if err != nil { 37 panic(errors.Wrapf(err, "connect dagger failed")) 38 } 39 defer client.Close() 40 41 cc := client.Pipeline("$$pipeline") 42 43 c := cc.Container(). 44 From("busybox"). 45 WithEnvVariable("DATE", time.Now().String()). 46 WithExec([]string{"sh", "-c", "mkdir -p /dist"}). 47 WithExec([]string{"sh", "-c", "echo ${DATE} > /dist/txt"}) 48 49 dir, err := c.Rootfs().Sync(ctx) 50 if err != nil { 51 panic(err) 52 } 53 54 id, err := dir.ID(ctx) 55 if err != nil { 56 panic(gqlerror.List{}) 57 } 58 59 c2 := cc.Container().WithRootfs(cc.LoadDirectoryFromID(id)) 60 61 // #Copy fs to local 62 _, err = c2.Directory("/dist").Export(ctx, ".wagon/demo") 63 if err != nil { 64 panic(errors.Wrapf(err, "export to client failed")) 65 } 66 }) 67 }