| 15 | } |
| 16 | |
| 17 | func Query[R any](t *testctx.T, query string, opts *QueryOptions, clientOpts ...dagger.ClientOpt) (*R, error) { |
| 18 | t.Helper() |
| 19 | ctx := t.Context() |
| 20 | clientOpts = append([]dagger.ClientOpt{ |
| 21 | dagger.WithLogOutput(NewTWriter(t)), |
| 22 | }, clientOpts...) |
| 23 | client, err := dagger.Connect(ctx, clientOpts...) |
| 24 | if err != nil { |
| 25 | return nil, err |
| 26 | } |
| 27 | t.Cleanup(func() { client.Close() }) |
| 28 | |
| 29 | return QueryWithClient[R](client, t, query, opts) |
| 30 | } |
| 31 | |
| 32 | func QueryWithClient[R any](c *dagger.Client, t *testctx.T, query string, opts *QueryOptions) (*R, error) { |
| 33 | t.Helper() |