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  }