From ed231d409501d1e496fbe2b2e31a279eb2998cf2 Mon Sep 17 00:00:00 2001 From: "Kai Qiang Wu(Kennan)" Date: Fri, 4 Mar 2016 10:05:34 +0000 Subject: [PATCH] Refine error message when save non-exist image Fixes: #20709 As discussed in the issue, we need refine the message to help user more understood, what happened for non-exist image. Signed-off-by: Kai Qiang Wu(Kennan) --- image/store.go | 3 +++ integration-cli/docker_cli_save_load_test.go | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/image/store.go b/image/store.go index 1279f59b66..92ac438db7 100644 --- a/image/store.go +++ b/image/store.go @@ -170,6 +170,9 @@ func (is *store) Search(term string) (ID, error) { dgst, err := is.digestSet.Lookup(term) if err != nil { + if err == digest.ErrDigestNotFound { + err = fmt.Errorf("No such image: %s", term) + } return "", err } return ID(dgst), nil diff --git a/integration-cli/docker_cli_save_load_test.go b/integration-cli/docker_cli_save_load_test.go index f023ec51e5..4479588ef3 100644 --- a/integration-cli/docker_cli_save_load_test.go +++ b/integration-cli/docker_cli_save_load_test.go @@ -167,6 +167,16 @@ func (s *DockerSuite) TestSaveAndLoadRepoFlags(c *check.C) { c.Assert(before, checker.Equals, after, check.Commentf("inspect is not the same after a save / load")) } +func (s *DockerSuite) TestSaveWithNoExistImage(c *check.C) { + testRequires(c, DaemonIsLinux) + + imgName := "foobar-non-existing-image" + + out, _, err := dockerCmdWithError("save", "-o", "test-img.tar", imgName) + c.Assert(err, checker.NotNil, check.Commentf("save image should fail for non-existing image")) + c.Assert(out, checker.Contains, fmt.Sprintf("No such image: %s", imgName)) +} + func (s *DockerSuite) TestSaveMultipleNames(c *check.C) { testRequires(c, DaemonIsLinux) repoName := "foobar-save-multi-name-test"