Skip to content

Commit

Permalink
Fix: docker push --quiet suppressing errors and exit code
Browse files Browse the repository at this point in the history
Before this patch:

    docker push --quiet nosuchimage
    docker.io/library/nosuchimage

    echo $?
    0

With this patch applied:

    docker push --quiet nosuchimage:latest
    An image does not exist locally with the tag: nosuchimage

    echo $?
    1

Signed-off-by: Sebastiaan van Stijn <[email protected]>
  • Loading branch information
thaJeztah authored and Francis Laniel committed Jul 28, 2020
1 parent fa37819 commit 621cd68
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
13 changes: 9 additions & 4 deletions cli/command/image/push.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ package image
import (
"context"
"fmt"
"io/ioutil"

"github.com/docker/cli/cli"
"github.com/docker/cli/cli/command"
"github.com/docker/cli/cli/streams"
"github.com/docker/distribution/reference"
"github.com/docker/docker/pkg/jsonmessage"
"github.com/docker/docker/registry"
Expand Down Expand Up @@ -68,9 +70,12 @@ func RunPush(dockerCli command.Cli, opts pushOptions) error {
}

defer responseBody.Close()
if !opts.quiet {
return jsonmessage.DisplayJSONMessagesToStream(responseBody, dockerCli.Out(), nil)
if opts.quiet {
err = jsonmessage.DisplayJSONMessagesToStream(responseBody, streams.NewOut(ioutil.Discard), nil)
if err == nil {
fmt.Fprintln(dockerCli.Out(), ref.String())
}
return err
}
fmt.Fprintln(dockerCli.Out(), ref.String())
return nil
return jsonmessage.DisplayJSONMessagesToStream(responseBody, dockerCli.Out(), nil)
}
8 changes: 8 additions & 0 deletions e2e/image/push_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,14 @@ func TestPushWithContentTrust(t *testing.T) {
})
}

func TestPushQuietErrors(t *testing.T) {
result := icmd.RunCmd(icmd.Command("docker", "push", "--quiet", "nosuchimage"))
result.Assert(t, icmd.Expected{
ExitCode: 1,
Err: "An image does not exist locally with the tag: nosuchimage",
})
}

func TestPushWithContentTrustUnreachableServer(t *testing.T) {
skip.If(t, environment.RemoteDaemon())

Expand Down

0 comments on commit 621cd68

Please sign in to comment.