diff --git a/client/client.go b/client/client.go index f24be978..8efb7023 100644 --- a/client/client.go +++ b/client/client.go @@ -189,12 +189,6 @@ func (c *Client) buildfn(ctx context.Context, pctx *plancontext.Context, fn DoFu wg.Done() } - // Catch solver's events - // Closed manually - eventsCh := make(chan *bk.SolveStatus) - wg.Add(1) - go catchOutput(eventsCh) - // Catch build events // Closed by buildkit buildCh := make(chan *bk.SolveStatus) @@ -202,6 +196,12 @@ func (c *Client) buildfn(ctx context.Context, pctx *plancontext.Context, fn DoFu go catchOutput(buildCh) resp, err := c.c.Build(ctx, opts, "", func(ctx context.Context, gw bkgw.Client) (*bkgw.Result, error) { + // Catch solver's events + // Closed by solver.Stop + eventsCh := make(chan *bk.SolveStatus) + wg.Add(1) + go catchOutput(eventsCh) + s := solver.New(solver.Opts{ Control: c.c, Gateway: gw, diff --git a/tests/plan.bats b/tests/plan.bats index 79f9880d..25c77106 100644 --- a/tests/plan.bats +++ b/tests/plan.bats @@ -248,3 +248,13 @@ setup() { assert_failure assert_output --partial "no match for platform in manifest" } + +@test "plan/do: invalid BUILDKIT_HOST results in error" { + cd "$TESTDIR" + + # ip address is in a reserved range that should be unroutable + export BUILDKIT_HOST=tcp://192.0.2.1:1234 + run timeout 30 "$DAGGER" "do" -p ./plan/do/actions.cue test + assert_failure + assert_output --partial "Unavailable: connection error" +}