From 499261eed5e9b8dbbab48be97f9c2c0716973264 Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Fri, 13 Feb 2026 17:11:35 -0800 Subject: [PATCH] build: avoid empty line when -q used with --call Signed-off-by: Tonis Tiigi --- commands/build.go | 2 +- tests/build.go | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/commands/build.go b/commands/build.go index b2a195916..7e8070160 100644 --- a/commands/build.go +++ b/commands/build.go @@ -411,7 +411,7 @@ func runBuild(ctx context.Context, dockerCli command.Cli, debugOpts debuggerOpti case progressui.RawJSONMode: // no additional display case progressui.QuietMode: - if options.quiet { + if options.quiet && opts.CallFunc == nil { fmt.Println(getImageID(resp.ExporterResponse)) } default: diff --git a/tests/build.go b/tests/build.go index 5ab41f5ab..327f7ddb5 100644 --- a/tests/build.go +++ b/tests/build.go @@ -1379,6 +1379,33 @@ FROM second require.Equal(t, 1, len(res.Sources)) }) + // docker/buildx#3651 + t.Run("outline-quiet-output", func(t *testing.T) { + dockerfile := []byte(` +FROM busybox +ARG FOO=bar +`) + dir := tmpdir( + t, + fstest.CreateFile("Dockerfile", dockerfile, 0600), + ) + + runOutline := func(args ...string) string { + cmd := buildxCmd(sb, withArgs(args...)) + var stdout bytes.Buffer + var stderr bytes.Buffer + cmd.Stdout = &stdout + cmd.Stderr = &stderr + require.NoError(t, cmd.Run(), stdout.String(), stderr.String()) + return stdout.String() + } + + quietOut := runOutline("build", "-q", "--call=outline", dir) + noneOut := runOutline("build", "--progress=none", "--call=outline", dir) + assert.Equal(t, noneOut, quietOut) + assert.False(t, strings.HasPrefix(quietOut, "\n")) + }) + t.Run("targets", func(t *testing.T) { dockerfile := []byte(` # build defines stage for compiling the binary