Bladeren bron

Merge pull request #13202 from duglin/ImportFix

Fix a regression in `docker import` on error from URL
Brian Goff 10 jaren geleden
bovenliggende
commit
ac81cd1fc3
2 gewijzigde bestanden met toevoegingen van 16 en 2 verwijderingen
  1. 5 2
      api/server/server.go
  2. 11 0
      integration-cli/docker_cli_import_test.go

+ 5 - 2
api/server/server.go

@@ -812,14 +812,17 @@ func (s *Server) postImagesCreate(version version.Version, w http.ResponseWriter
 			OutStream: output,
 		}
 
-		newConfig, err := builder.BuildFromConfig(s.daemon, &runconfig.Config{}, imageImportConfig.Changes)
+		// 'err' MUST NOT be defined within this block, we need any error
+		// generated from the download to be available to the output
+		// stream processing below
+		var newConfig *runconfig.Config
+		newConfig, err = builder.BuildFromConfig(s.daemon, &runconfig.Config{}, imageImportConfig.Changes)
 		if err != nil {
 			return err
 		}
 		imageImportConfig.ContainerConfig = newConfig
 
 		err = s.daemon.Repositories().Import(src, repo, tag, imageImportConfig)
-
 	}
 	if err != nil {
 		if !output.Flushed() {

+ 11 - 0
integration-cli/docker_cli_import_test.go

@@ -39,3 +39,14 @@ func (s *DockerSuite) TestImportDisplay(c *check.C) {
 	}
 
 }
+
+func (s *DockerSuite) TestImportBadURL(c *check.C) {
+	runCmd := exec.Command(dockerBinary, "import", "http://nourl/bad")
+	out, _, err := runCommandWithOutput(runCmd)
+	if err == nil {
+		c.Fatal("import was supposed to fail but didn't")
+	}
+	if !strings.Contains(out, "dial tcp") {
+		c.Fatalf("expected an error msg but didn't get one:\n%s", out)
+	}
+}