Browse code

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) <wkqwu@cn.ibm.com>

Kai Qiang Wu(Kennan) authored on 2016/03/04 19:05:34
Showing 2 changed files
... ...
@@ -170,6 +170,9 @@ func (is *store) Search(term string) (ID, error) {
170 170
 
171 171
 	dgst, err := is.digestSet.Lookup(term)
172 172
 	if err != nil {
173
+		if err == digest.ErrDigestNotFound {
174
+			err = fmt.Errorf("No such image: %s", term)
175
+		}
173 176
 		return "", err
174 177
 	}
175 178
 	return ID(dgst), nil
... ...
@@ -167,6 +167,16 @@ func (s *DockerSuite) TestSaveAndLoadRepoFlags(c *check.C) {
167 167
 	c.Assert(before, checker.Equals, after, check.Commentf("inspect is not the same after a save / load"))
168 168
 }
169 169
 
170
+func (s *DockerSuite) TestSaveWithNoExistImage(c *check.C) {
171
+	testRequires(c, DaemonIsLinux)
172
+
173
+	imgName := "foobar-non-existing-image"
174
+
175
+	out, _, err := dockerCmdWithError("save", "-o", "test-img.tar", imgName)
176
+	c.Assert(err, checker.NotNil, check.Commentf("save image should fail for non-existing image"))
177
+	c.Assert(out, checker.Contains, fmt.Sprintf("No such image: %s", imgName))
178
+}
179
+
170 180
 func (s *DockerSuite) TestSaveMultipleNames(c *check.C) {
171 181
 	testRequires(c, DaemonIsLinux)
172 182
 	repoName := "foobar-save-multi-name-test"