diff --git a/integration-cli/cli/cli.go b/integration-cli/cli/cli.go index 068a8cfbeb..c5802fc1e4 100644 --- a/integration-cli/cli/cli.go +++ b/integration-cli/cli/cli.go @@ -107,7 +107,7 @@ func Docker(cmd icmd.Cmd, cmdOperators ...CmdOperator) *icmd.Result { // validateArgs is a checker to ensure tests are not running commands which are // not supported on platforms. Specifically on Windows this is 'busybox top'. func validateArgs(args ...string) error { - if testEnv.OSType != "windows" { + if testEnv.DaemonInfo.OSType != "windows" { return nil } foundBusybox := -1 diff --git a/integration-cli/docker_api_containers_test.go b/integration-cli/docker_api_containers_test.go index bbb2fc4df6..fff09a6369 100644 --- a/integration-cli/docker_api_containers_test.go +++ b/integration-cli/docker_api_containers_test.go @@ -987,7 +987,7 @@ func (s *DockerAPISuite) TestContainerAPIWait(c *testing.T) { name := "test-api-wait" sleepCmd := "/bin/sleep" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { sleepCmd = "sleep" } dockerCmd(c, "run", "--name", name, "busybox", sleepCmd, "2") @@ -1194,7 +1194,7 @@ func (s *DockerAPISuite) TestContainerAPIDeleteRemoveVolume(c *testing.T) { testRequires(c, testEnv.IsLocalDaemon) vol := "/testvolume" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { vol = `c:\testvolume` } @@ -1972,7 +1972,7 @@ func (s *DockerAPISuite) TestContainersAPICreateMountsCreate(c *testing.T) { var ( testImg string ) - if testEnv.OSType != "windows" { + if testEnv.DaemonInfo.OSType != "windows" { testImg = "test-mount-config" buildImageSuccessfully(c, testImg, build.WithDockerfile(` FROM busybox @@ -2073,7 +2073,7 @@ func (s *DockerAPISuite) TestContainersAPICreateMountsCreate(c *testing.T) { } } - if testEnv.OSType != "windows" { // Windows does not support volume populate + if testEnv.DaemonInfo.OSType != "windows" { // Windows does not support volume populate cases = append(cases, []testCase{ { spec: mount.Mount{Type: "volume", Target: destPath, VolumeOptions: &mount.VolumeOptions{NoCopy: true}}, diff --git a/integration-cli/docker_api_images_test.go b/integration-cli/docker_api_images_test.go index 6101299416..1078cf5d6d 100644 --- a/integration-cli/docker_api_images_test.go +++ b/integration-cli/docker_api_images_test.go @@ -78,7 +78,7 @@ func (s *DockerAPISuite) TestAPIImagesDelete(c *testing.T) { assert.NilError(c, err) defer apiClient.Close() - if testEnv.OSType != "windows" { + if testEnv.DaemonInfo.OSType != "windows" { testRequires(c, Network) } name := "test-api-images-delete" @@ -102,7 +102,7 @@ func (s *DockerAPISuite) TestAPIImagesHistory(c *testing.T) { assert.NilError(c, err) defer apiClient.Close() - if testEnv.OSType != "windows" { + if testEnv.DaemonInfo.OSType != "windows" { testRequires(c, Network) } name := "test-api-images-history" diff --git a/integration-cli/docker_api_inspect_test.go b/integration-cli/docker_api_inspect_test.go index 2e973e7025..fe2f7eeb6b 100644 --- a/integration-cli/docker_api_inspect_test.go +++ b/integration-cli/docker_api_inspect_test.go @@ -27,7 +27,7 @@ func (s *DockerAPISuite) TestInspectAPIContainerResponse(c *testing.T) { var cases []acase - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { cases = []acase{ {"v1.25", append(keysBase, "Mounts")}, } diff --git a/integration-cli/docker_api_stats_test.go b/integration-cli/docker_api_stats_test.go index 76d4212cae..b5fb6ad296 100644 --- a/integration-cli/docker_api_stats_test.go +++ b/integration-cli/docker_api_stats_test.go @@ -42,7 +42,7 @@ func (s *DockerAPISuite) TestAPIStatsNoStreamGetCpu(c *testing.T) { var cpuPercent = 0.0 - if testEnv.OSType != "windows" { + if testEnv.DaemonInfo.OSType != "windows" { cpuDelta := float64(v.CPUStats.CPUUsage.TotalUsage - v.PreCPUStats.CPUUsage.TotalUsage) systemDelta := float64(v.CPUStats.SystemUsage - v.PreCPUStats.SystemUsage) cpuPercent = (cpuDelta / systemDelta) * float64(len(v.CPUStats.CPUUsage.PercpuUsage)) * 100.0 @@ -109,7 +109,7 @@ func (s *DockerAPISuite) TestAPIStatsNetworkStats(c *testing.T) { // Retrieve the container address net := "bridge" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { net = "nat" } contIP := findContainerIP(c, id, net) @@ -157,7 +157,7 @@ func (s *DockerAPISuite) TestAPIStatsNetworkStats(c *testing.T) { // On Linux, account for ARP. expRxPkts := preRxPackets + uint64(numPings) expTxPkts := preTxPackets + uint64(numPings) - if testEnv.OSType != "windows" { + if testEnv.DaemonInfo.OSType != "windows" { expRxPkts++ expTxPkts++ } diff --git a/integration-cli/docker_api_test.go b/integration-cli/docker_api_test.go index 36f574833c..5b6e97836c 100644 --- a/integration-cli/docker_api_test.go +++ b/integration-cli/docker_api_test.go @@ -40,13 +40,13 @@ func (s *DockerAPISuite) TestAPIGetEnabledCORS(c *testing.T) { body.Close() // TODO: @runcom incomplete tests, why old integration tests had this headers // and here none of the headers below are in the response? - //c.Log(res.Header) - //assert.Equal(c, res.Header.Get("Access-Control-Allow-Origin"), "*") - //assert.Equal(c, res.Header.Get("Access-Control-Allow-Headers"), "Origin, X-Requested-With, Content-Type, Accept, X-Registry-Auth") + // c.Log(res.Header) + // assert.Equal(c, res.Header.Get("Access-Control-Allow-Origin"), "*") + // assert.Equal(c, res.Header.Get("Access-Control-Allow-Headers"), "Origin, X-Requested-With, Content-Type, Accept, X-Registry-Auth") } func (s *DockerAPISuite) TestAPIClientVersionOldNotSupported(c *testing.T) { - if testEnv.OSType != runtime.GOOS { + if testEnv.DaemonInfo.OSType != runtime.GOOS { c.Skip("Daemon platform doesn't match test platform") } if api.MinVersion == api.DefaultVersion { diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index ce5ed94c02..6052a04fe8 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -52,7 +52,7 @@ func (s *DockerCLIBuildSuite) TestBuildJSONEmptyRun(c *testing.T) { func (s *DockerCLIBuildSuite) TestBuildShCmdJSONEntrypoint(c *testing.T) { name := "testbuildshcmdjsonentrypoint" expected := "/bin/sh -c echo test" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected = "cmd /S /C echo test" } @@ -90,7 +90,7 @@ func (s *DockerCLIBuildSuite) TestBuildEnvironmentReplacementVolume(c *testing.T var volumePath string - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { volumePath = "c:/quux" } else { volumePath = "/quux" @@ -145,7 +145,7 @@ func (s *DockerCLIBuildSuite) TestBuildEnvironmentReplacementWorkdir(c *testing. res := inspectFieldJSON(c, name, "Config.WorkingDir") expected := `"/work"` - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected = `"C:\\work"` } if res != expected { @@ -1298,7 +1298,7 @@ func (s *DockerCLIBuildSuite) TestBuildRelativeWorkdir(c *testing.T) { expectedFinal string ) - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected1 = `C:/` expected2 = `C:/test1` expected3 = `C:/test2` @@ -1377,7 +1377,7 @@ func (s *DockerCLIBuildSuite) TestBuildWorkdirWithEnvVariables(c *testing.T) { name := "testbuildworkdirwithenvvariables" var expected string - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected = `C:\test1\test2` } else { expected = `/test1/test2` @@ -1399,7 +1399,7 @@ func (s *DockerCLIBuildSuite) TestBuildRelativeCopy(c *testing.T) { testRequires(c, NotUserNamespace) var expected string - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected = `C:/test1/test2` } else { expected = `/test1/test2` @@ -2230,7 +2230,7 @@ func (s *DockerCLIBuildSuite) TestBuildOnBuild(c *testing.T) { // gh #2446 func (s *DockerCLIBuildSuite) TestBuildAddToSymlinkDest(c *testing.T) { makeLink := `ln -s /foo /bar` - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { makeLink = `mklink /D C:\bar C:\foo` } name := "testbuildaddtosymlinkdest" @@ -3186,7 +3186,7 @@ func (s *DockerCLIBuildSuite) TestBuildCmdShDashC(c *testing.T) { res := inspectFieldJSON(c, name, "Config.Cmd") expected := `["/bin/sh","-c","echo cmd"]` - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected = `["cmd /S /C echo cmd"]` } if res != expected { @@ -3258,7 +3258,7 @@ func (s *DockerCLIBuildSuite) TestBuildEntrypointCanBeOverriddenByChildInspect(c expected = `["/bin/sh","-c","echo quux"]` ) - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected = `["cmd /S /C echo quux"]` } @@ -3328,7 +3328,7 @@ func (s *DockerCLIBuildSuite) TestBuildVerboseOut(c *testing.T) { name := "testbuildverboseout" expected := "\n123\n" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected = "\n123\r\n" } @@ -3344,7 +3344,7 @@ func (s *DockerCLIBuildSuite) TestBuildWithTabs(c *testing.T) { res := inspectFieldJSON(c, name, "ContainerConfig.Cmd") expected1 := `["/bin/sh","-c","echo\tone\t\ttwo"]` expected2 := `["/bin/sh","-c","echo\u0009one\u0009\u0009two"]` // syntactically equivalent, and what Go 1.3 generates - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected1 = `["cmd /S /C echo\tone\t\ttwo"]` expected2 = `["cmd /S /C echo\u0009one\u0009\u0009two"]` // syntactically equivalent, and what Go 1.3 generates } @@ -3542,7 +3542,7 @@ func (s *DockerCLIBuildSuite) TestBuildStderr(c *testing.T) { result.Assert(c, icmd.Success) // Windows to non-Windows should have a security warning - if runtime.GOOS == "windows" && testEnv.OSType != "windows" && !strings.Contains(result.Stdout(), "SECURITY WARNING:") { + if runtime.GOOS == "windows" && testEnv.DaemonInfo.OSType != "windows" && !strings.Contains(result.Stdout(), "SECURITY WARNING:") { c.Fatalf("Stdout contains unexpected output: %q", result.Stdout()) } @@ -3659,7 +3659,7 @@ func (s *DockerCLIBuildSuite) TestBuildVolumesRetainContents(c *testing.T) { volName = "/foo" ) - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { volName = "C:/foo" } @@ -3842,7 +3842,7 @@ RUN echo " \ expected := "\n foo \n" // Windows uses the builtin echo, which preserves quotes - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected = "\" foo \"" } @@ -3876,7 +3876,7 @@ func (s *DockerCLIBuildSuite) TestBuildMissingArgs(c *testing.T) { "INSERT": {}, } - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { skipCmds = map[string]struct{}{ "CMD": {}, "RUN": {}, @@ -4008,7 +4008,7 @@ func (s *DockerCLIBuildSuite) TestBuildRUNErrMsg(c *testing.T) { name := "testbuildbadrunerrmsg" shell := "/bin/sh -c" exitCode := 127 - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { shell = "cmd /S /C" // architectural - Windows has to start the container to determine the exe is bad, Linux does not exitCode = 1 @@ -4027,7 +4027,7 @@ func (s *DockerCLIBuildSuite) TestBuildRUNErrMsg(c *testing.T) { func (s *DockerCLIBuildSuite) TestBuildNullStringInAddCopyVolume(c *testing.T) { name := "testbuildnullstringinaddcopyvolume" volName := "nullvolume" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { volName = `C:\\nullvolume` } @@ -4067,7 +4067,7 @@ func (s *DockerCLIBuildSuite) TestBuildBuildTimeArg(c *testing.T) { envKey := "foo" envVal := "bar" var dockerfile string - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { // Bugs in Windows busybox port - use the default base image and native cmd stuff dockerfile = fmt.Sprintf(`FROM `+minimalBaseImage()+` ARG %s @@ -4678,7 +4678,7 @@ func (s *DockerCLIBuildSuite) TestBuildMultiStageUnusedArg(c *testing.T) { func (s *DockerCLIBuildSuite) TestBuildNoNamedVolume(c *testing.T) { volName := "testname:/foo" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { volName = "testname:C:\\foo" } dockerCmd(c, "run", "-v", volName, "busybox", "sh", "-c", "touch /foo/oops") @@ -6105,7 +6105,7 @@ CMD echo foo out, _ := dockerCmd(c, "inspect", "--format", "{{ json .Config.Cmd }}", "build2") expected := `["/bin/sh","-c","echo foo"]` - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected = `["/bin/sh -c echo foo"]` } assert.Equal(c, strings.TrimSpace(out), expected) diff --git a/integration-cli/docker_cli_commit_test.go b/integration-cli/docker_cli_commit_test.go index c562430527..97655aa518 100644 --- a/integration-cli/docker_cli_commit_test.go +++ b/integration-cli/docker_cli_commit_test.go @@ -137,7 +137,7 @@ func (s *DockerCLICommitSuite) TestCommitChange(c *testing.T) { expectedEnv := "[DEBUG=true test=1 PATH=/foo]" // bug fixed in 1.36, add min APi >= 1.36 requirement // PR record https://github.com/moby/moby/pull/35582 - if versions.GreaterThan(testEnv.DaemonAPIVersion(), "1.35") && testEnv.OSType != "windows" { + if versions.GreaterThan(testEnv.DaemonAPIVersion(), "1.35") && testEnv.DaemonInfo.OSType != "windows" { // The ordering here is due to `PATH` being overridden from the container's // ENV. On windows, the container doesn't have a `PATH` ENV variable so // the ordering is the same as the cli. diff --git a/integration-cli/docker_cli_create_test.go b/integration-cli/docker_cli_create_test.go index 1cc5121617..60ee3639d5 100644 --- a/integration-cli/docker_cli_create_test.go +++ b/integration-cli/docker_cli_create_test.go @@ -201,7 +201,7 @@ func (s *DockerCLICreateSuite) TestCreateLabelFromImage(c *testing.T) { func (s *DockerCLICreateSuite) TestCreateHostnameWithNumber(c *testing.T) { image := "busybox" // Busybox on Windows does not implement hostname command - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { image = testEnv.PlatformDefaults.BaseImage } out, _ := dockerCmd(c, "run", "-h", "web.0", image, "hostname") @@ -284,7 +284,7 @@ func (s *DockerCLICreateSuite) TestCreateWithWorkdir(c *testing.T) { dockerCmd(c, "create", "--name", name, "-w", dir, "busybox") // Windows does not create the workdir until the container is started - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { dockerCmd(c, "start", name) if testEnv.DaemonInfo.Isolation.IsHyperV() { // Hyper-V isolated containers do not allow file-operations on a diff --git a/integration-cli/docker_cli_events_test.go b/integration-cli/docker_cli_events_test.go index f517ffa5a0..449b06a7a6 100644 --- a/integration-cli/docker_cli_events_test.go +++ b/integration-cli/docker_cli_events_test.go @@ -657,7 +657,7 @@ func (s *DockerCLIEventSuite) TestEventsContainerRestart(c *testing.T) { // wait until test2 is auto removed. waitTime := 10 * time.Second - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { // Windows takes longer... waitTime = 90 * time.Second } diff --git a/integration-cli/docker_cli_info_test.go b/integration-cli/docker_cli_info_test.go index 2244dd5ef8..af65b24535 100644 --- a/integration-cli/docker_cli_info_test.go +++ b/integration-cli/docker_cli_info_test.go @@ -46,7 +46,7 @@ func (s *DockerCLIInfoSuite) TestInfoEnsureSucceeds(c *testing.T) { "Live Restore Enabled:", } - if testEnv.OSType == "linux" { + if testEnv.DaemonInfo.OSType == "linux" { stringsToCheck = append(stringsToCheck, "Init Binary:", "Security Options:", "containerd version:", "runc version:", "init version:") } diff --git a/integration-cli/docker_cli_inspect_test.go b/integration-cli/docker_cli_inspect_test.go index 8941b78148..436da0f01e 100644 --- a/integration-cli/docker_cli_inspect_test.go +++ b/integration-cli/docker_cli_inspect_test.go @@ -72,7 +72,7 @@ func (s *DockerCLIInspectSuite) TestInspectStatus(c *testing.T) { // Windows does not support pause/unpause on Windows Server Containers. // (RS1 does for Hyper-V Containers, but production CI is not setup for that) - if testEnv.OSType != "windows" { + if testEnv.DaemonInfo.OSType != "windows" { dockerCmd(c, "pause", out) inspectOut = inspectField(c, out, "State.Status") assert.Equal(c, inspectOut, "paused") @@ -174,7 +174,7 @@ func (s *DockerCLIInspectSuite) TestInspectContainerFilterInt(c *testing.T) { func (s *DockerCLIInspectSuite) TestInspectBindMountPoint(c *testing.T) { modifier := ",z" prefix, slash := getPrefixAndSlashFromDaemonPlatform() - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { modifier = "" // Linux creates the host directory if it doesn't exist. Windows does not. os.Mkdir(`c:\data`, os.ModeDir) @@ -197,7 +197,7 @@ func (s *DockerCLIInspectSuite) TestInspectBindMountPoint(c *testing.T) { assert.Equal(c, m.Driver, "") assert.Equal(c, m.Source, prefix+slash+"data") assert.Equal(c, m.Destination, prefix+slash+"data") - if testEnv.OSType != "windows" { // Windows does not set mode + if testEnv.DaemonInfo.OSType != "windows" { // Windows does not set mode assert.Equal(c, m.Mode, "ro"+modifier) } assert.Equal(c, m.RW, false) diff --git a/integration-cli/docker_cli_ps_test.go b/integration-cli/docker_cli_ps_test.go index 212ddb6261..5f09160da4 100644 --- a/integration-cli/docker_cli_ps_test.go +++ b/integration-cli/docker_cli_ps_test.go @@ -223,7 +223,7 @@ func (s *DockerCLIPsSuite) TestPsListContainersFilterStatus(c *testing.T) { Err: err, }) // Windows doesn't support pausing of containers - if testEnv.OSType != "windows" { + if testEnv.DaemonInfo.OSType != "windows" { // pause running container out = cli.DockerCmd(c, "run", "-itd", "busybox").Combined() pausedID := strings.TrimSpace(out) diff --git a/integration-cli/docker_cli_restart_test.go b/integration-cli/docker_cli_restart_test.go index 14ed3bc77d..31ff2f6251 100644 --- a/integration-cli/docker_cli_restart_test.go +++ b/integration-cli/docker_cli_restart_test.go @@ -299,7 +299,7 @@ func (s *DockerCLIRestartSuite) TestRestartContainerwithRestartPolicy(c *testing id1 := strings.TrimSpace(out1) id2 := strings.TrimSpace(out2) waitTimeout := 15 * time.Second - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { waitTimeout = 150 * time.Second } err := waitInspect(id1, "{{ .State.Restarting }} {{ .State.Running }}", "false false", waitTimeout) diff --git a/integration-cli/docker_cli_rmi_test.go b/integration-cli/docker_cli_rmi_test.go index 29a6efda72..57d23ce70c 100644 --- a/integration-cli/docker_cli_rmi_test.go +++ b/integration-cli/docker_cli_rmi_test.go @@ -77,7 +77,7 @@ func (s *DockerCLIRmiSuite) TestRmiImgIDMultipleTag(c *testing.T) { // Wait for it to exit as cannot commit a running container on Windows, and // it will take a few seconds to exit - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { cli.WaitExited(c, containerID, 60*time.Second) } @@ -118,7 +118,7 @@ func (s *DockerCLIRmiSuite) TestRmiImgIDForce(c *testing.T) { // Wait for it to exit as cannot commit a running container on Windows, and // it will take a few seconds to exit - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { cli.WaitExited(c, containerID, 60*time.Second) } diff --git a/integration-cli/docker_cli_run_test.go b/integration-cli/docker_cli_run_test.go index 2469106be6..350e777941 100644 --- a/integration-cli/docker_cli_run_test.go +++ b/integration-cli/docker_cli_run_test.go @@ -82,7 +82,7 @@ func (s *DockerCLIRunSuite) TestRunLeakyFileDescriptors(c *testing.T) { // this will fail when Internet access is unavailable func (s *DockerCLIRunSuite) TestRunLookupGoogleDNS(c *testing.T) { testRequires(c, Network, NotArm) - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { // nslookup isn't present in Windows busybox. Is built-in. Further, // nslookup isn't present in nanoserver. Hence just use PowerShell... dockerCmd(c, "run", testEnv.PlatformDefaults.BaseImage, "powershell", "Resolve-DNSName", "google.com") @@ -146,7 +146,7 @@ func (s *DockerCLIRunSuite) TestRunDetachedContainerIDPrinting(c *testing.T) { func (s *DockerCLIRunSuite) TestRunWorkingDirectory(c *testing.T) { dir := "/root" image := "busybox" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { dir = `C:/Windows` } @@ -169,7 +169,7 @@ func (s *DockerCLIRunSuite) TestRunWorkingDirectory(c *testing.T) { func (s *DockerCLIRunSuite) TestRunWithoutNetworking(c *testing.T) { count := "-c" image := "busybox" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { count = "-n" image = testEnv.PlatformDefaults.BaseImage } @@ -360,7 +360,7 @@ func (s *DockerCLIRunSuite) TestRunWithVolumesFromExited(c *testing.T) { ) // Create a file in a volume - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { out, exitCode = dockerCmd(c, "run", "--name", "test-data", "--volume", `c:\some\dir`, testEnv.PlatformDefaults.BaseImage, "cmd", "/c", `echo hello > c:\some\dir\file`) } else { out, exitCode = dockerCmd(c, "run", "--name", "test-data", "--volume", "/some/dir", "busybox", "touch", "/some/dir/file") @@ -370,7 +370,7 @@ func (s *DockerCLIRunSuite) TestRunWithVolumesFromExited(c *testing.T) { } // Read the file from another container using --volumes-from to access the volume in the second container - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { out, exitCode = dockerCmd(c, "run", "--volumes-from", "test-data", testEnv.PlatformDefaults.BaseImage, "cmd", "/c", `type c:\some\dir\file`) } else { out, exitCode = dockerCmd(c, "run", "--volumes-from", "test-data", "busybox", "cat", "/some/dir/file") @@ -402,7 +402,7 @@ func (s *DockerCLIRunSuite) TestRunCreateVolumesInSymlinkDir(c *testing.T) { // In the case of Windows to Windows CI, if the machine is setup so that // the temp directory is not the C: drive, this test is invalid and will // not work. - if testEnv.OSType == "windows" && strings.ToLower(dir[:1]) != "c" { + if testEnv.DaemonInfo.OSType == "windows" && strings.ToLower(dir[:1]) != "c" { c.Skip("Requires TEMP to point to C: drive") } @@ -412,7 +412,7 @@ func (s *DockerCLIRunSuite) TestRunCreateVolumesInSymlinkDir(c *testing.T) { } f.Close() - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { dockerFile = fmt.Sprintf("FROM %s\nRUN mkdir %s\nRUN mklink /D c:\\test %s", testEnv.PlatformDefaults.BaseImage, dir, dir) containerPath = `c:\test\test` cmd = "tasklist" @@ -437,7 +437,7 @@ func (s *DockerCLIRunSuite) TestRunCreateVolumesInSymlinkDir2(c *testing.T) { testRequires(c, testEnv.IsLocalDaemon, DaemonIsLinux) name := "test-volume-symlink2" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { dockerFile = fmt.Sprintf("FROM %s\nRUN mkdir c:\\%s\nRUN mklink /D c:\\test c:\\%s", testEnv.PlatformDefaults.BaseImage, name, name) containerPath = `c:\test\test` cmd = "tasklist" @@ -461,7 +461,7 @@ func (s *DockerCLIRunSuite) TestRunVolumesFromInReadonlyModeFails(c *testing.T) volumeDir string fileInVol string ) - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { volumeDir = `c:/test` // Forward-slash as using busybox fileInVol = `c:/test/file` } else { @@ -482,7 +482,7 @@ func (s *DockerCLIRunSuite) TestRunVolumesFromInReadWriteMode(c *testing.T) { volumeDir string fileInVol string ) - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { volumeDir = `c:/test` // Forward-slash as using busybox fileInVol = `c:/test/file` } else { @@ -503,7 +503,7 @@ func (s *DockerCLIRunSuite) TestRunVolumesFromInReadWriteMode(c *testing.T) { func (s *DockerCLIRunSuite) TestVolumesFromGetsProperMode(c *testing.T) { testRequires(c, testEnv.IsLocalDaemon) prefix, slash := getPrefixAndSlashFromDaemonPlatform() - hostpath := RandomTmpDirPath("test", testEnv.OSType) + hostpath := RandomTmpDirPath("test", testEnv.DaemonInfo.OSType) if err := os.MkdirAll(hostpath, 0755); err != nil { c.Fatalf("Failed to create %s: %q", hostpath, err) } @@ -526,11 +526,11 @@ func (s *DockerCLIRunSuite) TestVolumesFromGetsProperMode(c *testing.T) { // Test for GH#10618 func (s *DockerCLIRunSuite) TestRunNoDupVolumes(c *testing.T) { - path1 := RandomTmpDirPath("test1", testEnv.OSType) - path2 := RandomTmpDirPath("test2", testEnv.OSType) + path1 := RandomTmpDirPath("test1", testEnv.DaemonInfo.OSType) + path2 := RandomTmpDirPath("test2", testEnv.DaemonInfo.OSType) someplace := ":/someplace" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { // Windows requires that the source directory exists before calling HCS testRequires(c, testEnv.IsLocalDaemon) someplace = `:c:\someplace` @@ -579,7 +579,7 @@ func (s *DockerCLIRunSuite) TestRunNoDupVolumes(c *testing.T) { // Test for #1351 func (s *DockerCLIRunSuite) TestRunApplyVolumesFromBeforeVolumes(c *testing.T) { prefix := "" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { prefix = `c:` } dockerCmd(c, "run", "--name", "parent", "-v", prefix+"/test", "busybox", "touch", prefix+"/test/foo") @@ -588,7 +588,7 @@ func (s *DockerCLIRunSuite) TestRunApplyVolumesFromBeforeVolumes(c *testing.T) { func (s *DockerCLIRunSuite) TestRunMultipleVolumesFrom(c *testing.T) { prefix := "" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { prefix = `c:` } dockerCmd(c, "run", "--name", "parent1", "-v", prefix+"/test", "busybox", "touch", prefix+"/test/foo") @@ -618,7 +618,7 @@ func (s *DockerCLIRunSuite) TestRunVerifyContainerID(c *testing.T) { // Test that creating a container with a volume doesn't crash. Regression test for #995. func (s *DockerCLIRunSuite) TestRunCreateVolume(c *testing.T) { prefix := "" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { prefix = `c:` } dockerCmd(c, "run", "-v", prefix+"/var/lib/data", "busybox", "true") @@ -675,7 +675,7 @@ func (s *DockerCLIRunSuite) TestRunVolumesFromSymlinkPath(c *testing.T) { RUN ln -s home /foo VOLUME ["/foo/bar"]` - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { prefix = `c:` dfContents = `FROM ` + testEnv.PlatformDefaults.BaseImage + ` RUN mkdir c:\home @@ -721,7 +721,7 @@ func (s *DockerCLIRunSuite) TestRunExitCode(c *testing.T) { func (s *DockerCLIRunSuite) TestRunUserDefaults(c *testing.T) { expected := "uid=0(root) gid=0(root)" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected = "uid=0(root) gid=0(root) groups=0(root)" } out, _ := dockerCmd(c, "run", "busybox", "id") @@ -927,7 +927,7 @@ func (s *DockerCLIRunSuite) TestRunEnvironmentOverride(c *testing.T) { } func (s *DockerCLIRunSuite) TestRunContainerNetwork(c *testing.T) { - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { // Windows busybox does not have ping. Use built in ping instead. dockerCmd(c, "run", testEnv.PlatformDefaults.BaseImage, "ping", "-n", "1", "127.0.0.1") } else { @@ -1227,7 +1227,7 @@ func (s *DockerCLIRunSuite) TestRunModeHostname(c *testing.T) { func (s *DockerCLIRunSuite) TestRunRootWorkdir(c *testing.T) { out, _ := dockerCmd(c, "run", "--workdir", "/", "busybox", "pwd") expected := "/\n" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected = "C:" + expected } if out != expected { @@ -1236,7 +1236,7 @@ func (s *DockerCLIRunSuite) TestRunRootWorkdir(c *testing.T) { } func (s *DockerCLIRunSuite) TestRunAllowBindMountingRoot(c *testing.T) { - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { // Windows busybox will fail with Permission Denied on items such as pagefile.sys dockerCmd(c, "run", "-v", `c:\:c:\host`, testEnv.PlatformDefaults.BaseImage, "cmd", "-c", "dir", `c:\host`) } else { @@ -1247,7 +1247,7 @@ func (s *DockerCLIRunSuite) TestRunAllowBindMountingRoot(c *testing.T) { func (s *DockerCLIRunSuite) TestRunDisallowBindMountingRootToRoot(c *testing.T) { mount := "/:/" targetDir := "/host" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { mount = `c:\:c\` targetDir = "c:/host" // Forward slash as using busybox } @@ -1708,7 +1708,7 @@ func (s *DockerCLIRunSuite) TestRunCleanupCmdOnEntrypoint(c *testing.T) { } out = strings.TrimSpace(out) expected := "root" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { if strings.Contains(testEnv.PlatformDefaults.BaseImage, "servercore") { expected = `user manager\containeradministrator` } else { @@ -1724,7 +1724,7 @@ func (s *DockerCLIRunSuite) TestRunCleanupCmdOnEntrypoint(c *testing.T) { func (s *DockerCLIRunSuite) TestRunWorkdirExistsAndIsFile(c *testing.T) { existingFile := "/bin/cat" expected := "not a directory" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { existingFile = `\windows\system32\ntdll.dll` expected = `The directory name is invalid.` } @@ -1740,7 +1740,7 @@ func (s *DockerCLIRunSuite) TestRunExitOnStdinClose(c *testing.T) { meow := "/bin/cat" delay := 60 - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { meow = "cat" } runCmd := exec.Command(dockerBinary, "run", "--name", name, "-i", "busybox", meow) @@ -1883,7 +1883,7 @@ func (s *DockerCLIRunSuite) TestRunEntrypoint(c *testing.T) { func (s *DockerCLIRunSuite) TestRunBindMounts(c *testing.T) { testRequires(c, testEnv.IsLocalDaemon) - if testEnv.OSType == "linux" { + if testEnv.DaemonInfo.OSType == "linux" { testRequires(c, DaemonIsLinux, NotUserNamespace) } @@ -1904,7 +1904,7 @@ func (s *DockerCLIRunSuite) TestRunBindMounts(c *testing.T) { } // test writing to bind mount - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { dockerCmd(c, "run", "-v", fmt.Sprintf(`%s:c:\tmp:rw`, tmpDir), "busybox", "touch", "c:/tmp/holla") } else { dockerCmd(c, "run", "-v", fmt.Sprintf("%s:/tmp:rw", tmpDir), "busybox", "touch", "/tmp/holla") @@ -1919,7 +1919,7 @@ func (s *DockerCLIRunSuite) TestRunBindMounts(c *testing.T) { } // Windows does not (and likely never will) support mounting a single file - if testEnv.OSType != "windows" { + if testEnv.DaemonInfo.OSType != "windows" { // test mount a file dockerCmd(c, "run", "-v", fmt.Sprintf("%s/holla:/tmp/holla:rw", tmpDir), "busybox", "sh", "-c", "echo -n 'yotta' > /tmp/holla") content := readFile(path.Join(tmpDir, "holla"), c) // Will fail if the file doesn't exist @@ -1988,7 +1988,7 @@ func (s *DockerCLIRunSuite) TestRunSetMacAddress(c *testing.T) { skip.If(c, RuntimeIsWindowsContainerd(), "FIXME: Broken on Windows + containerd combination") mac := "12:34:56:78:9a:bc" var out string - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { out, _ = dockerCmd(c, "run", "-i", "--rm", fmt.Sprintf("--mac-address=%s", mac), "busybox", "sh", "-c", "ipconfig /all | grep 'Physical Address' | awk '{print $12}'") mac = strings.ReplaceAll(strings.ToUpper(mac), ":", "-") // To Windows-style MACs } else { @@ -2184,7 +2184,7 @@ func (s *DockerCLIRunSuite) TestVolumesNoCopyData(c *testing.T) { c.Fatalf("Data was copied on volumes-from but shouldn't be:\n%q", out) } - tmpDir := RandomTmpDirPath("docker_test_bind_mount_copy_data", testEnv.OSType) + tmpDir := RandomTmpDirPath("docker_test_bind_mount_copy_data", testEnv.DaemonInfo.OSType) if out, _, err := dockerCmdWithError("run", "-v", tmpDir+":/foo", "dataimage", "ls", "-lh", "/foo/bar"); err == nil || !strings.Contains(out, "No such file or directory") { c.Fatalf("Data was copied on bind mount but shouldn't be:\n%q", out) } @@ -2536,7 +2536,7 @@ func (s *DockerCLIRunSuite) TestRunNonLocalMacAddress(c *testing.T) { args := []string{"run", "--mac-address", addr} expected := addr - if testEnv.OSType != "windows" { + if testEnv.DaemonInfo.OSType != "windows" { args = append(args, "busybox", "ifconfig") } else { args = append(args, testEnv.PlatformDefaults.BaseImage, "ipconfig", "/all") @@ -2632,7 +2632,7 @@ func (s *DockerCLIRunSuite) TestRunSetDefaultRestartPolicy(c *testing.T) { func (s *DockerCLIRunSuite) TestRunRestartMaxRetries(c *testing.T) { out, _ := dockerCmd(c, "run", "-d", "--restart=on-failure:3", "busybox", "false") timeout := 10 * time.Second - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { timeout = 120 * time.Second } @@ -3003,7 +3003,7 @@ func (s *DockerCLIRunSuite) TestVolumeFromMixedRWOptions(c *testing.T) { dockerCmd(c, "run", "--volumes-from", "parent:ro", "--name", "test-volumes-1", "busybox", "true") dockerCmd(c, "run", "--volumes-from", "parent:rw", "--name", "test-volumes-2", "busybox", "true") - if testEnv.OSType != "windows" { + if testEnv.DaemonInfo.OSType != "windows" { mRO, err := inspectMountPoint("test-volumes-1", prefix+slash+"test") assert.NilError(c, err, "failed to inspect mount point") if mRO.RW { @@ -3394,7 +3394,7 @@ func (s *DockerCLIRunSuite) TestRunLoopbackOnlyExistsWhenNetworkingDisabled(c *t // Issue #4681 func (s *DockerCLIRunSuite) TestRunLoopbackWhenNetworkDisabled(c *testing.T) { - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { dockerCmd(c, "run", "--net=none", testEnv.PlatformDefaults.BaseImage, "ping", "-n", "1", "127.0.0.1") } else { dockerCmd(c, "run", "--net=none", "busybox", "ping", "-c", "1", "127.0.0.1") @@ -3660,7 +3660,7 @@ func (s *DockerCLIRunSuite) TestRunNonExistingCmd(c *testing.T) { // as that's when the check is made (and yes, by its design...) func (s *DockerCLIRunSuite) TestCmdCannotBeInvoked(c *testing.T) { expected := 126 - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected = 127 } name := "testCmdCannotBeInvoked" diff --git a/integration-cli/docker_cli_top_test.go b/integration-cli/docker_cli_top_test.go index 5426992376..c3ee2f2dab 100644 --- a/integration-cli/docker_cli_top_test.go +++ b/integration-cli/docker_cli_top_test.go @@ -25,7 +25,7 @@ func (s *DockerCLITopSuite) TestTopMultipleArgs(c *testing.T) { cleanedContainerID := strings.TrimSpace(out) var expected icmd.Expected - switch testEnv.OSType { + switch testEnv.DaemonInfo.OSType { case "windows": expected = icmd.Expected{ExitCode: 1, Err: "Windows does not support arguments to top"} default: @@ -46,7 +46,7 @@ func (s *DockerCLITopSuite) TestTopNonPrivileged(c *testing.T) { // Windows will list the name of the launched executable which in this case is busybox.exe, without the parameters. // Linux will display the command executed in the container var lookingFor string - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { lookingFor = "busybox.exe" } else { lookingFor = "top" diff --git a/integration-cli/docker_deprecated_api_v124_test.go b/integration-cli/docker_deprecated_api_v124_test.go index a6cf73a696..a6e4315e55 100644 --- a/integration-cli/docker_deprecated_api_v124_test.go +++ b/integration-cli/docker_deprecated_api_v124_test.go @@ -41,7 +41,7 @@ func (s *DockerAPISuite) TestDeprecatedContainerAPIStartVolumeBinds(c *testing.T // TODO Windows CI: Investigate further why this fails on Windows to Windows CI. testRequires(c, DaemonIsLinux) path := "/foo" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { path = `c:\foo` } name := "testing" @@ -54,7 +54,7 @@ func (s *DockerAPISuite) TestDeprecatedContainerAPIStartVolumeBinds(c *testing.T assert.NilError(c, err) assert.Equal(c, res.StatusCode, http.StatusCreated) - bindPath := RandomTmpDirPath("test", testEnv.OSType) + bindPath := RandomTmpDirPath("test", testEnv.DaemonInfo.OSType) config = map[string]interface{}{ "Binds": []string{bindPath + ":" + path}, } @@ -81,8 +81,8 @@ func (s *DockerAPISuite) TestDeprecatedContainerAPIStartDupVolumeBinds(c *testin assert.NilError(c, err) assert.Equal(c, res.StatusCode, http.StatusCreated) - bindPath1 := RandomTmpDirPath("test1", testEnv.OSType) - bindPath2 := RandomTmpDirPath("test2", testEnv.OSType) + bindPath1 := RandomTmpDirPath("test1", testEnv.DaemonInfo.OSType) + bindPath2 := RandomTmpDirPath("test2", testEnv.DaemonInfo.OSType) config = map[string]interface{}{ "Binds": []string{bindPath1 + ":/tmp", bindPath2 + ":/tmp"}, diff --git a/integration-cli/fixtures_linux_daemon_test.go b/integration-cli/fixtures_linux_daemon_test.go index b91b510c1f..37c798925b 100644 --- a/integration-cli/fixtures_linux_daemon_test.go +++ b/integration-cli/fixtures_linux_daemon_test.go @@ -23,7 +23,7 @@ func ensureSyscallTest(c *testing.T) { // if no match, must build in docker, which is significantly slower // (slower mostly because of the vfs graphdriver) - if testEnv.OSType != runtime.GOOS { + if testEnv.DaemonInfo.OSType != runtime.GOOS { ensureSyscallTestBuild(c) return } @@ -86,7 +86,7 @@ func ensureNNPTest(c *testing.T) { // if no match, must build in docker, which is significantly slower // (slower mostly because of the vfs graphdriver) - if testEnv.OSType != runtime.GOOS { + if testEnv.DaemonInfo.OSType != runtime.GOOS { ensureNNPTestBuild(c) return } diff --git a/integration-cli/requirements_test.go b/integration-cli/requirements_test.go index 95f25cef3f..8ab2eaed01 100644 --- a/integration-cli/requirements_test.go +++ b/integration-cli/requirements_test.go @@ -24,11 +24,11 @@ func ArchitectureIsNot(arch string) bool { } func DaemonIsWindows() bool { - return testEnv.OSType == "windows" + return testEnv.DaemonInfo.OSType == "windows" } func DaemonIsLinux() bool { - return testEnv.OSType == "linux" + return testEnv.DaemonInfo.OSType == "linux" } func MinimumAPIVersion(version string) func() bool { @@ -153,7 +153,7 @@ func UserNamespaceInKernel() bool { } func IsPausable() bool { - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { return testEnv.DaemonInfo.Isolation.IsHyperV() } return true diff --git a/integration-cli/test_vars_test.go b/integration-cli/test_vars_test.go index 82ec58e9e7..4eac5cad35 100644 --- a/integration-cli/test_vars_test.go +++ b/integration-cli/test_vars_test.go @@ -4,7 +4,7 @@ package main // the command is for a sleeping container based on the daemon platform. // The Windows busybox image does not have a `top` command. func sleepCommandForDaemonPlatform() []string { - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { return []string{"sleep", "240"} } return []string{"top"} diff --git a/integration-cli/utils_test.go b/integration-cli/utils_test.go index 5d1ad302b2..1be232afe0 100644 --- a/integration-cli/utils_test.go +++ b/integration-cli/utils_test.go @@ -14,7 +14,7 @@ import ( ) func getPrefixAndSlashFromDaemonPlatform() (prefix, slash string) { - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { return "c:", `\` } return "", "/" diff --git a/integration/container/cdi_test.go b/integration/container/cdi_test.go index c25d1cf206..91dcbc3476 100644 --- a/integration/container/cdi_test.go +++ b/integration/container/cdi_test.go @@ -20,7 +20,7 @@ import ( ) func TestCreateWithCDIDevices(t *testing.T) { - skip.If(t, testEnv.OSType != "linux", "CDI devices are only supported on Linux") + skip.If(t, testEnv.DaemonInfo.OSType != "linux", "CDI devices are only supported on Linux") skip.If(t, testEnv.IsRemoteDaemon, "cannot run cdi tests with a remote daemon") cwd, err := os.Getwd() diff --git a/integration/container/copy_test.go b/integration/container/copy_test.go index 153c18f95b..2ec51d89af 100644 --- a/integration/container/copy_test.go +++ b/integration/container/copy_test.go @@ -42,7 +42,7 @@ func TestCopyFromContainerPathIsNotDir(t *testing.T) { path := "/etc/passwd/" expected := "not a directory" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { path = "c:/windows/system32/drivers/etc/hosts/" expected = "The filename, directory name, or volume label syntax is incorrect." } @@ -127,7 +127,7 @@ func TestCopyToContainerPathIsNotDir(t *testing.T) { cid := container.Create(ctx, t, apiclient) path := "/etc/passwd/" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { path = "c:/windows/system32/drivers/etc/hosts/" } err := apiclient.CopyToContainer(ctx, cid, path, nil, types.CopyToContainerOptions{}) diff --git a/integration/container/create_test.go b/integration/container/create_test.go index 89c28b1887..c83af007d1 100644 --- a/integration/container/create_test.go +++ b/integration/container/create_test.go @@ -514,7 +514,7 @@ func TestCreatePlatformSpecificImageNoPlatform(t *testing.T) { defer setupTest(t)() skip.If(t, testEnv.DaemonInfo.Architecture == "arm", "test only makes sense to run on non-arm systems") - skip.If(t, testEnv.OSType != "linux", "test image is only available on linux") + skip.If(t, testEnv.DaemonInfo.OSType != "linux", "test image is only available on linux") cli := testEnv.APIClient() _, err := cli.ContainerCreate( diff --git a/integration/container/diff_test.go b/integration/container/diff_test.go index c1e7ea6974..49c0557c38 100644 --- a/integration/container/diff_test.go +++ b/integration/container/diff_test.go @@ -13,7 +13,7 @@ import ( ) func TestDiff(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "FIXME") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME") defer setupTest(t)() client := testEnv.APIClient() ctx := context.Background() @@ -28,7 +28,7 @@ func TestDiff(t *testing.T) { {Kind: containertypes.ChangeAdd, Path: "/foo"}, {Kind: containertypes.ChangeAdd, Path: "/foo/bar"}, } - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { poll.WaitOn(t, container.IsInState(ctx, client, cID, "exited"), poll.WithDelay(100*time.Millisecond), poll.WithTimeout(60*time.Second)) expected = []containertypes.FilesystemChange{ {Kind: containertypes.ChangeModify, Path: "Files/foo"}, diff --git a/integration/container/exec_test.go b/integration/container/exec_test.go index 5ef8a7506d..3e874b762b 100644 --- a/integration/container/exec_test.go +++ b/integration/container/exec_test.go @@ -119,7 +119,7 @@ func TestExec(t *testing.T) { out := string(r) assert.NilError(t, err) expected := "PWD=/tmp" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { expected = "PWD=C:/tmp" } assert.Assert(t, is.Contains(out, expected), "exec command not running in expected /tmp working directory") @@ -128,7 +128,7 @@ func TestExec(t *testing.T) { func TestExecUser(t *testing.T) { skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.39"), "broken in earlier versions") - skip.If(t, testEnv.OSType == "windows", "FIXME. Probably needs to wait for container to be in running state.") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME. Probably needs to wait for container to be in running state.") defer setupTest(t)() ctx := context.Background() client := testEnv.APIClient() diff --git a/integration/container/health_test.go b/integration/container/health_test.go index 30cd2b8442..9e28a58066 100644 --- a/integration/container/health_test.go +++ b/integration/container/health_test.go @@ -18,7 +18,7 @@ import ( // TestHealthCheckWorkdir verifies that health-checks inherit the containers' // working-dir. func TestHealthCheckWorkdir(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "FIXME") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME") defer setupTest(t)() ctx := context.Background() client := testEnv.APIClient() @@ -37,7 +37,7 @@ func TestHealthCheckWorkdir(t *testing.T) { // GitHub #37263 // Do not stop healthchecks just because we sent a signal to the container func TestHealthKillContainer(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "Windows only supports SIGKILL and SIGTERM? See https://github.com/moby/moby/issues/39574") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "Windows only supports SIGKILL and SIGTERM? See https://github.com/moby/moby/issues/39574") defer setupTest(t)() ctx := context.Background() diff --git a/integration/container/kill_test.go b/integration/container/kill_test.go index 42adb7867a..c126213191 100644 --- a/integration/container/kill_test.go +++ b/integration/container/kill_test.go @@ -70,7 +70,7 @@ func TestKillContainer(t *testing.T) { for _, tc := range testCases { tc := tc t.Run(tc.doc, func(t *testing.T) { - skip.If(t, testEnv.OSType == tc.skipOs, "Windows does not support SIGWINCH") + skip.If(t, testEnv.DaemonInfo.OSType == tc.skipOs, "Windows does not support SIGWINCH") ctx := context.Background() id := container.Run(ctx, t, client) err := client.ContainerKill(ctx, id, tc.signal) @@ -82,7 +82,7 @@ func TestKillContainer(t *testing.T) { } func TestKillWithStopSignalAndRestartPolicies(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "Windows only supports 1.25 or later") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "Windows only supports 1.25 or later") defer setupTest(t)() client := testEnv.APIClient() @@ -121,7 +121,7 @@ func TestKillWithStopSignalAndRestartPolicies(t *testing.T) { } func TestKillStoppedContainer(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "Windows only supports 1.25 or later") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "Windows only supports 1.25 or later") defer setupTest(t)() ctx := context.Background() client := testEnv.APIClient() @@ -132,7 +132,7 @@ func TestKillStoppedContainer(t *testing.T) { } func TestKillStoppedContainerAPIPre120(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "Windows only supports 1.25 or later") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "Windows only supports 1.25 or later") defer setupTest(t)() ctx := context.Background() client := request.NewAPIClient(t, client.WithVersion("1.19")) @@ -143,7 +143,7 @@ func TestKillStoppedContainerAPIPre120(t *testing.T) { func TestKillDifferentUserContainer(t *testing.T) { // TODO Windows: Windows does not yet support -u (Feb 2016). - skip.If(t, testEnv.OSType == "windows", "User containers (container.Config.User) are not yet supported on %q platform", testEnv.OSType) + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "User containers (container.Config.User) are not yet supported on %q platform", testEnv.DaemonInfo.OSType) defer setupTest(t)() ctx := context.Background() diff --git a/integration/container/logs_test.go b/integration/container/logs_test.go index 3a1e933a87..3e9c20b925 100644 --- a/integration/container/logs_test.go +++ b/integration/container/logs_test.go @@ -125,7 +125,7 @@ func testLogs(t *testing.T, logDriver string) { } pollTimeout := time.Second * 10 - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { pollTimeout = StopContainerWindowsPollTimeout } @@ -160,7 +160,7 @@ func testLogs(t *testing.T, logDriver string) { stdoutStr := stdout.String() - if tty && testEnv.OSType == "windows" { + if tty && testEnv.DaemonInfo.OSType == "windows" { stdoutStr = stripEscapeCodes(t, stdoutStr) // Special case for Windows Server 2019 diff --git a/integration/container/nat_test.go b/integration/container/nat_test.go index c94e5a556e..38aed6bc04 100644 --- a/integration/container/nat_test.go +++ b/integration/container/nat_test.go @@ -20,7 +20,7 @@ import ( ) func TestNetworkNat(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "FIXME") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME") skip.If(t, testEnv.IsRemoteDaemon) defer setupTest(t)() @@ -57,7 +57,7 @@ func TestNetworkLocalhostTCPNat(t *testing.T) { func TestNetworkLoopbackNat(t *testing.T) { skip.If(t, testEnv.GitHubActions, "FIXME: https://github.com/moby/moby/issues/41561") - skip.If(t, testEnv.OSType == "windows", "FIXME") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME") skip.If(t, testEnv.IsRemoteDaemon) defer setupTest(t)() diff --git a/integration/container/remove_test.go b/integration/container/remove_test.go index b37358d84f..af3014f1e5 100644 --- a/integration/container/remove_test.go +++ b/integration/container/remove_test.go @@ -18,7 +18,7 @@ import ( ) func getPrefixAndSlashFromDaemonPlatform() (prefix, slash string) { - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { return "c:", `\` } return "", "/" diff --git a/integration/container/rename_test.go b/integration/container/rename_test.go index 689a37fc32..b24326f067 100644 --- a/integration/container/rename_test.go +++ b/integration/container/rename_test.go @@ -23,7 +23,7 @@ import ( // This checks that "rename" updates source container correctly and doesn't set it to null. func TestRenameLinkedContainer(t *testing.T) { skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.32"), "broken in earlier versions") - skip.If(t, testEnv.OSType == "windows", "FIXME") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME") defer setupTest(t)() ctx := context.Background() client := testEnv.APIClient() @@ -151,7 +151,7 @@ func TestRenameAnonymousContainer(t *testing.T) { poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond)) count := "-c" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { count = "-n" } cID = container.Run(ctx, t, client, func(c *container.TestContainerConfig) { @@ -190,7 +190,7 @@ func TestRenameContainerWithSameName(t *testing.T) { // container could still reference to the container that is renamed. func TestRenameContainerWithLinkedContainer(t *testing.T) { skip.If(t, testEnv.IsRemoteDaemon) - skip.If(t, testEnv.OSType == "windows", "FIXME") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME") defer setupTest(t)() ctx := context.Background() diff --git a/integration/container/stop_windows_test.go b/integration/container/stop_windows_test.go index 65683822e9..3dc3d33a88 100644 --- a/integration/container/stop_windows_test.go +++ b/integration/container/stop_windows_test.go @@ -17,7 +17,7 @@ import ( // a timeout works as documented, i.e. in case of negative timeout // waiting is not limited (issue #35311). func TestStopContainerWithTimeout(t *testing.T) { - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") defer setupTest(t)() client := testEnv.APIClient() ctx := context.Background() diff --git a/integration/container/update_test.go b/integration/container/update_test.go index 086014540a..d3c70f01be 100644 --- a/integration/container/update_test.go +++ b/integration/container/update_test.go @@ -33,7 +33,7 @@ func TestUpdateRestartPolicy(t *testing.T) { assert.NilError(t, err) timeout := 60 * time.Second - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { timeout = 180 * time.Second } diff --git a/integration/image/import_test.go b/integration/image/import_test.go index 110ab87a5f..1535a2e380 100644 --- a/integration/image/import_test.go +++ b/integration/image/import_test.go @@ -22,7 +22,7 @@ import ( func TestImportExtremelyLargeImageWorks(t *testing.T) { skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon") skip.If(t, runtime.GOARCH == "arm64", "effective test will be time out") - skip.If(t, testEnv.OSType == "windows", "TODO enable on windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "TODO enable on windows") t.Parallel() // Spin up a new daemon, so that we can run this test in parallel (it's a slow test) @@ -51,7 +51,7 @@ func TestImportExtremelyLargeImageWorks(t *testing.T) { } func TestImportWithCustomPlatform(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "TODO enable on windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "TODO enable on windows") defer setupTest(t)() client := testEnv.APIClient() diff --git a/integration/image/inspect_test.go b/integration/image/inspect_test.go index 519e824c47..7d5c5193ec 100644 --- a/integration/image/inspect_test.go +++ b/integration/image/inspect_test.go @@ -13,7 +13,7 @@ import ( // Regression test for: https://github.com/moby/moby/issues/45556 func TestImageInspectEmptyTagsAndDigests(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "build-empty-images is not called on Windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "build-empty-images is not called on Windows") defer setupTest(t)() client := testEnv.APIClient() diff --git a/integration/image/pull_test.go b/integration/image/pull_test.go index f5ae78ad93..689ceea976 100644 --- a/integration/image/pull_test.go +++ b/integration/image/pull_test.go @@ -115,7 +115,7 @@ func createTestImage(ctx context.Context, t testing.TB, store content.Store) oci // verifies with the remote that the digest exists in that repo. func TestImagePullStoredfDigestForOtherRepo(t *testing.T) { skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon") - skip.If(t, testEnv.OSType == "windows", "We don't run a test registry on Windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "We don't run a test registry on Windows") skip.If(t, testEnv.IsRootless, "Rootless has a different view of localhost (needed for test registry access)") defer setupTest(t)() diff --git a/integration/image/save_test.go b/integration/image/save_test.go index caaaff439c..c74344bb7c 100644 --- a/integration/image/save_test.go +++ b/integration/image/save_test.go @@ -161,7 +161,7 @@ func TestSaveRepoWithMultipleImages(t *testing.T) { } func TestSaveDirectoryPermissions(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "Test is looking at linux specific details") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "Test is looking at linux specific details") defer setupTest(t)() diff --git a/integration/network/delete_test.go b/integration/network/delete_test.go index 221960e986..c020d8ac22 100644 --- a/integration/network/delete_test.go +++ b/integration/network/delete_test.go @@ -65,7 +65,7 @@ func TestNetworkCreateDelete(t *testing.T) { // ID is removed, and not the network with the given name. func TestDockerNetworkDeletePreferID(t *testing.T) { skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.34"), "broken in earlier versions") - skip.If(t, testEnv.OSType == "windows", + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME. Windows doesn't run DinD and uses networks shared between control daemon and daemon under test") defer setupTest(t)() client := testEnv.APIClient() diff --git a/integration/network/inspect_test.go b/integration/network/inspect_test.go index 0a97154d8e..a5db4265d8 100644 --- a/integration/network/inspect_test.go +++ b/integration/network/inspect_test.go @@ -13,7 +13,7 @@ import ( ) func TestInspectNetwork(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "FIXME") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME") skip.If(t, testEnv.IsRootless, "rootless mode doesn't support Swarm-mode") defer setupTest(t)() d := swarm.NewSwarm(t, testEnv) diff --git a/integration/network/network_test.go b/integration/network/network_test.go index bfc6e2998e..a9ee0d86e6 100644 --- a/integration/network/network_test.go +++ b/integration/network/network_test.go @@ -153,7 +153,7 @@ func TestNetworkList(t *testing.T) { } func TestHostIPv4BridgeLabel(t *testing.T) { - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") skip.If(t, testEnv.IsRemoteDaemon) skip.If(t, testEnv.IsRootless, "rootless mode has different view of network") d := daemon.New(t) @@ -179,7 +179,7 @@ func TestHostIPv4BridgeLabel(t *testing.T) { } func TestDefaultNetworkOpts(t *testing.T) { - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") skip.If(t, testEnv.IsRemoteDaemon) skip.If(t, testEnv.IsRootless, "rootless mode has different view of network") diff --git a/integration/network/service_test.go b/integration/network/service_test.go index ba6a8b3caf..9803b718d6 100644 --- a/integration/network/service_test.go +++ b/integration/network/service_test.go @@ -27,7 +27,7 @@ func delInterface(t *testing.T, ifName string) { } func TestDaemonRestartWithLiveRestore(t *testing.T) { - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") skip.If(t, testEnv.IsRemoteDaemon) skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.38"), "skip test from new feature") skip.If(t, testEnv.IsRootless, "rootless mode has different view of network") @@ -56,7 +56,7 @@ func TestDaemonRestartWithLiveRestore(t *testing.T) { } func TestDaemonDefaultNetworkPools(t *testing.T) { - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") // Remove docker0 bridge and the start daemon defining the predefined address pools skip.If(t, testEnv.IsRemoteDaemon) skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.38"), "skip test from new feature") @@ -99,7 +99,7 @@ func TestDaemonDefaultNetworkPools(t *testing.T) { } func TestDaemonRestartWithExistingNetwork(t *testing.T) { - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") skip.If(t, testEnv.IsRemoteDaemon) skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.38"), "skip test from new feature") skip.If(t, testEnv.IsRootless, "rootless mode has different view of network") @@ -133,7 +133,7 @@ func TestDaemonRestartWithExistingNetwork(t *testing.T) { } func TestDaemonRestartWithExistingNetworkWithDefaultPoolRange(t *testing.T) { - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") skip.If(t, testEnv.IsRemoteDaemon) skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.38"), "skip test from new feature") skip.If(t, testEnv.IsRootless, "rootless mode has different view of network") @@ -184,7 +184,7 @@ func TestDaemonRestartWithExistingNetworkWithDefaultPoolRange(t *testing.T) { } func TestDaemonWithBipAndDefaultNetworkPool(t *testing.T) { - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") skip.If(t, testEnv.IsRemoteDaemon) skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.38"), "skip test from new feature") skip.If(t, testEnv.IsRootless, "rootless mode has different view of network") @@ -209,7 +209,7 @@ func TestDaemonWithBipAndDefaultNetworkPool(t *testing.T) { } func TestServiceWithPredefinedNetwork(t *testing.T) { - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") skip.If(t, testEnv.IsRootless, "rootless mode doesn't support Swarm-mode") defer setupTest(t)() d := swarm.NewSwarm(t, testEnv) @@ -242,7 +242,7 @@ func TestServiceRemoveKeepsIngressNetwork(t *testing.T) { t.Skip("FLAKY_TEST") skip.If(t, testEnv.IsRootless, "rootless mode doesn't support Swarm-mode") - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") defer setupTest(t)() d := swarm.NewSwarm(t, testEnv) defer d.Stop(t) @@ -330,7 +330,7 @@ func noServices(ctx context.Context, client client.ServiceAPIClient) func(log po } func TestServiceWithDataPathPortInit(t *testing.T) { - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.40"), "DataPathPort was added in API v1.40") skip.If(t, testEnv.IsRootless, "rootless mode doesn't support Swarm-mode") defer setupTest(t)() @@ -398,7 +398,7 @@ func TestServiceWithDataPathPortInit(t *testing.T) { } func TestServiceWithDefaultAddressPoolInit(t *testing.T) { - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") skip.If(t, testEnv.IsRootless, "rootless mode doesn't support Swarm-mode") defer setupTest(t)() d := swarm.NewSwarm(t, testEnv, diff --git a/integration/plugin/common/plugin_test.go b/integration/plugin/common/plugin_test.go index 630d4a09c3..d5ab852bdb 100644 --- a/integration/plugin/common/plugin_test.go +++ b/integration/plugin/common/plugin_test.go @@ -90,7 +90,7 @@ func TestPluginInvalidJSON(t *testing.T) { func TestPluginInstall(t *testing.T) { skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon") - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") skip.If(t, testEnv.IsRootless, "rootless mode has different view of localhost") ctx := context.Background() @@ -199,7 +199,7 @@ func TestPluginInstall(t *testing.T) { func TestPluginsWithRuntimes(t *testing.T) { skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon") skip.If(t, testEnv.IsRootless, "Test not supported on rootless due to buggy daemon setup in rootless mode due to daemon restart") - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") dir, err := os.MkdirTemp("", t.Name()) assert.NilError(t, err) @@ -261,7 +261,7 @@ func TestPluginsWithRuntimes(t *testing.T) { func TestPluginBackCompatMediaTypes(t *testing.T) { skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon") - skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows") skip.If(t, testEnv.IsRootless, "Rootless has a different view of localhost (needed for test registry access)") defer setupTest(t)() diff --git a/integration/session/session_test.go b/integration/session/session_test.go index b5fdf0b32d..566469a8c7 100644 --- a/integration/session/session_test.go +++ b/integration/session/session_test.go @@ -12,7 +12,7 @@ import ( ) func TestSessionCreate(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "FIXME") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME") skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.39"), "experimental in older versions") defer setupTest(t)() @@ -33,7 +33,7 @@ func TestSessionCreate(t *testing.T) { } func TestSessionCreateWithBadUpgrade(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "FIXME") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME") skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.39"), "experimental in older versions") defer setupTest(t)() diff --git a/integration/system/disk_usage_test.go b/integration/system/disk_usage_test.go index c0513073c1..865b79c7b1 100644 --- a/integration/system/disk_usage_test.go +++ b/integration/system/disk_usage_test.go @@ -13,7 +13,7 @@ import ( ) func TestDiskUsage(t *testing.T) { - skip.If(t, testEnv.OSType == "windows") // d.Start fails on Windows with `protocol not available` + skip.If(t, testEnv.DaemonInfo.OSType == "windows") // d.Start fails on Windows with `protocol not available` t.Parallel() diff --git a/integration/system/event_test.go b/integration/system/event_test.go index 4351c9bd29..6a40456e52 100644 --- a/integration/system/event_test.go +++ b/integration/system/event_test.go @@ -29,7 +29,7 @@ import ( func TestEventsExecDie(t *testing.T) { skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.36"), "broken in earlier versions") - skip.If(t, testEnv.OSType == "windows", "FIXME. Suspect may need to wait until container is running before exec") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME. Suspect may need to wait until container is running before exec") defer setupTest(t)() ctx := context.Background() client := testEnv.APIClient() @@ -77,7 +77,7 @@ func TestEventsExecDie(t *testing.T) { // backward compatibility so old `JSONMessage` could still be used. // This test verifies that backward compatibility maintains. func TestEventsBackwardsCompatible(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "Windows doesn't support back-compat messages") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "Windows doesn't support back-compat messages") defer setupTest(t)() ctx := context.Background() client := testEnv.APIClient() @@ -128,7 +128,7 @@ func TestEventsBackwardsCompatible(t *testing.T) { // TestEventsVolumeCreate verifies that volume create events are only fired // once: when creating the volume, and not when attaching to a container. func TestEventsVolumeCreate(t *testing.T) { - skip.If(t, testEnv.OSType == "windows", "FIXME: Windows doesn't trigger the events? Could be a race") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME: Windows doesn't trigger the events? Could be a race") defer setupTest(t)() ctx, cancel := context.WithCancel(context.Background()) diff --git a/integration/system/version_test.go b/integration/system/version_test.go index 98a3c8ed44..e78b201da8 100644 --- a/integration/system/version_test.go +++ b/integration/system/version_test.go @@ -19,5 +19,5 @@ func TestVersion(t *testing.T) { assert.Check(t, version.Version != "") assert.Check(t, version.MinAPIVersion != "") assert.Check(t, is.Equal(testEnv.DaemonInfo.ExperimentalBuild, version.Experimental)) - assert.Check(t, is.Equal(testEnv.OSType, version.Os)) + assert.Check(t, is.Equal(testEnv.DaemonInfo.OSType, version.Os)) } diff --git a/integration/volume/volume_test.go b/integration/volume/volume_test.go index 96bc1e1117..bfc7ce38a3 100644 --- a/integration/volume/volume_test.go +++ b/integration/volume/volume_test.go @@ -32,7 +32,7 @@ func TestVolumesCreateAndList(t *testing.T) { name := t.Name() // Windows file system is case insensitive - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { name = strings.ToLower(name) } vol, err := client.VolumeCreate(ctx, volume.CreateOptions{ @@ -112,7 +112,7 @@ func TestVolumesRemove(t *testing.T) { // Regression test for https://github.com/docker/cli/issues/4082 func TestVolumesRemoveSwarmEnabled(t *testing.T) { skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon") - skip.If(t, testEnv.OSType == "windows", "TODO enable on windows") + skip.If(t, testEnv.DaemonInfo.OSType == "windows", "TODO enable on windows") t.Parallel() defer setupTest(t)() @@ -249,7 +249,7 @@ func TestVolumesInvalidJSON(t *testing.T) { } func getPrefixAndSlashFromDaemonPlatform() (prefix, slash string) { - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { return "c:", `\` } return "", "/" @@ -311,7 +311,7 @@ func TestVolumePruneAnonFromImage(t *testing.T) { client := testEnv.APIClient() volDest := "/foo" - if testEnv.OSType == "windows" { + if testEnv.DaemonInfo.OSType == "windows" { volDest = `c:\\foo` } diff --git a/testutil/environment/clean.go b/testutil/environment/clean.go index 91a4ebe256..10d7607d19 100644 --- a/testutil/environment/clean.go +++ b/testutil/environment/clean.go @@ -21,7 +21,7 @@ func (e *Execution) Clean(t testing.TB) { t.Helper() apiClient := e.APIClient() - platform := e.OSType + platform := e.DaemonInfo.OSType if (platform != "windows") || (platform == "windows" && e.DaemonInfo.Isolation == "hyperv") { unpauseAllContainers(t, apiClient) } diff --git a/testutil/environment/environment.go b/testutil/environment/environment.go index 66bfba220a..ddc92033cc 100644 --- a/testutil/environment/environment.go +++ b/testutil/environment/environment.go @@ -21,7 +21,6 @@ import ( type Execution struct { client client.APIClient DaemonInfo types.Info - OSType string PlatformDefaults PlatformDefaults protectedElements protectedElements } @@ -53,7 +52,6 @@ func FromClient(c *client.Client) (*Execution, error) { return &Execution{ client: c, DaemonInfo: info, - OSType: info.OSType, PlatformDefaults: getPlatformDefaults(info), protectedElements: newProtectedElements(), }, nil @@ -208,7 +206,7 @@ func (e *Execution) HasExistingImage(t testing.TB, reference string) bool { // EnsureFrozenImagesLinux loads frozen test images into the daemon // if they aren't already loaded func EnsureFrozenImagesLinux(testEnv *Execution) error { - if testEnv.OSType == "linux" { + if testEnv.DaemonInfo.OSType == "linux" { err := load.FrozenImagesLinux(testEnv.APIClient(), frozenImages...) if err != nil { return errors.Wrap(err, "error loading frozen images") diff --git a/testutil/environment/protect.go b/testutil/environment/protect.go index a84dccc9a5..f63a9ada04 100644 --- a/testutil/environment/protect.go +++ b/testutil/environment/protect.go @@ -40,7 +40,7 @@ func ProtectAll(t testing.TB, testEnv *Execution) { ProtectImages(t, testEnv) ProtectNetworks(t, testEnv) ProtectVolumes(t, testEnv) - if testEnv.OSType == "linux" { + if testEnv.DaemonInfo.OSType == "linux" { ProtectPlugins(t, testEnv) } } @@ -91,7 +91,7 @@ func ProtectImages(t testing.TB, testEnv *Execution) { t.Helper() images := getExistingImages(t, testEnv) - if testEnv.OSType == "linux" { + if testEnv.DaemonInfo.OSType == "linux" { images = append(images, frozenImages...) } testEnv.ProtectImage(t, images...) diff --git a/testutil/fakestorage/fixtures.go b/testutil/fakestorage/fixtures.go index e11bee3b28..20c31db22b 100644 --- a/testutil/fakestorage/fixtures.go +++ b/testutil/fakestorage/fixtures.go @@ -35,7 +35,7 @@ func ensureHTTPServerImage(t testing.TB) { } defer os.RemoveAll(tmp) - goos := testEnv.OSType + goos := testEnv.DaemonInfo.OSType if goos == "" { goos = "linux" }