diff --git a/api/client/image/build.go b/api/client/image/build.go index 6080aec83b..38f4bcd439 100644 --- a/api/client/image/build.go +++ b/api/client/image/build.go @@ -289,7 +289,7 @@ func runBuild(dockerCli *client.DockerCli, options buildOptions) error { // Windows: show error message about modified file permissions if the // daemon isn't running Windows. - if response.OSType != "windows" && runtime.GOOS == "windows" { + if response.OSType != "windows" && runtime.GOOS == "windows" && !options.quiet { fmt.Fprintln(dockerCli.Err(), `SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.`) } diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index 000fb46dac..6bcae7fedf 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -4599,26 +4599,9 @@ func (s *DockerSuite) TestBuildNotVerboseSuccess(c *check.C) { if outRegexp.Find([]byte(stdout)) == nil { c.Fatalf("Test %s expected stdout to match the [%v] regexp, but it is [%v]", te.Name, outRegexp, stdout) } - if runtime.GOOS == "windows" { - // stderr contains a security warning on Windows if the daemon isn't Windows - lines := strings.Split(stderr, "\n") - warningCount := 0 - for _, v := range lines { - warningText := "SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host." - if strings.Contains(v, warningText) { - warningCount++ - } - if v != "" && !strings.Contains(v, warningText) { - c.Fatalf("Stderr contains unexpected output line: %q", v) - } - } - if warningCount != 1 && daemonPlatform != "windows" { - c.Fatalf("Test %s didn't get security warning running from Windows to non-Windows", te.Name) - } - } else { - if stderr != "" { - c.Fatalf("Test %s expected stderr to be empty, but it is [%#v]", te.Name, stderr) - } + + if stderr != "" { + c.Fatalf("Test %s expected stderr to be empty, but it is [%#v]", te.Name, stderr) } } @@ -4691,17 +4674,16 @@ func (s *DockerSuite) TestBuildStderr(c *check.C) { c.Fatal(err) } - if runtime.GOOS == "windows" { - // stderr might contain a security warning on windows - lines := strings.Split(stderr, "\n") - for _, v := range lines { - if v != "" && !strings.Contains(v, "SECURITY WARNING:") { - c.Fatalf("Stderr contains unexpected output line: %q", v) - } + if runtime.GOOS == "windows" && + daemonPlatform != "windows" { + // Windows to non-Windows should have a security warning + if !strings.Contains(stderr, "SECURITY WARNING:") { + c.Fatalf("Stderr contains unexpected output: %q", stderr) } } else { + // Other platform combinations should have no stderr written too if stderr != "" { - c.Fatalf("Stderr should have been empty, instead its: %q", stderr) + c.Fatalf("Stderr should have been empty, instead it's: %q", stderr) } } }