Browse code

Windows: Get Integration CLI running

Signed-off-by: John Howard <jhoward@microsoft.com>

John Howard authored on 2015/08/29 02:36:42
Showing 55 changed files
... ...
@@ -59,10 +59,12 @@ type DockerDaemonSuite struct {
59 59
 }
60 60
 
61 61
 func (s *DockerDaemonSuite) SetUpTest(c *check.C) {
62
+	testRequires(c, DaemonIsLinux)
62 63
 	s.d = NewDaemon(c)
63 64
 }
64 65
 
65 66
 func (s *DockerDaemonSuite) TearDownTest(c *check.C) {
67
+	testRequires(c, DaemonIsLinux)
66 68
 	s.d.Stop()
67 69
 	s.ds.TearDownTest(c)
68 70
 }
... ...
@@ -13,6 +13,7 @@ import (
13 13
 )
14 14
 
15 15
 func (s *DockerSuite) TestGetContainersAttachWebsocket(c *check.C) {
16
+	testRequires(c, DaemonIsLinux)
16 17
 	out, _ := dockerCmd(c, "run", "-dit", "busybox", "cat")
17 18
 
18 19
 	rwc, err := sockConn(time.Duration(10 * time.Second))
... ...
@@ -97,6 +98,7 @@ func (s *DockerSuite) TestGetContainersWsAttachContainerNotFound(c *check.C) {
97 97
 }
98 98
 
99 99
 func (s *DockerSuite) TestPostContainersAttach(c *check.C) {
100
+	testRequires(c, DaemonIsLinux)
100 101
 	out, _ := dockerCmd(c, "run", "-dit", "busybox", "cat")
101 102
 
102 103
 	r, w := io.Pipe()
... ...
@@ -160,6 +162,7 @@ func (s *DockerSuite) TestPostContainersAttach(c *check.C) {
160 160
 }
161 161
 
162 162
 func (s *DockerSuite) TestPostContainersAttachStderr(c *check.C) {
163
+	testRequires(c, DaemonIsLinux)
163 164
 	out, _ := dockerCmd(c, "run", "-dit", "busybox", "/bin/sh", "-c", "cat >&2")
164 165
 
165 166
 	r, w := io.Pipe()
... ...
@@ -45,6 +45,7 @@ func (s *DockerSuite) TestBuildApiDockerfilePath(c *check.C) {
45 45
 }
46 46
 
47 47
 func (s *DockerSuite) TestBuildApiDockerFileRemote(c *check.C) {
48
+	testRequires(c, DaemonIsLinux)
48 49
 	server, err := fakeStorage(map[string]string{
49 50
 		"testD": `FROM busybox
50 51
 COPY * /tmp/
... ...
@@ -75,6 +76,7 @@ RUN find /tmp/`,
75 75
 }
76 76
 
77 77
 func (s *DockerSuite) TestBuildApiRemoteTarballContext(c *check.C) {
78
+	testRequires(c, DaemonIsLinux)
78 79
 	buffer := new(bytes.Buffer)
79 80
 	tw := tar.NewWriter(buffer)
80 81
 	defer tw.Close()
... ...
@@ -107,6 +109,7 @@ func (s *DockerSuite) TestBuildApiRemoteTarballContext(c *check.C) {
107 107
 }
108 108
 
109 109
 func (s *DockerSuite) TestBuildApiRemoteTarballContextWithCustomDockerfile(c *check.C) {
110
+	testRequires(c, DaemonIsLinux)
110 111
 	buffer := new(bytes.Buffer)
111 112
 	tw := tar.NewWriter(buffer)
112 113
 	defer tw.Close()
... ...
@@ -161,6 +164,7 @@ RUN echo 'right'
161 161
 }
162 162
 
163 163
 func (s *DockerSuite) TestBuildApiLowerDockerfile(c *check.C) {
164
+	testRequires(c, DaemonIsLinux)
164 165
 	git, err := newFakeGit("repo", map[string]string{
165 166
 		"dockerfile": `FROM busybox
166 167
 RUN echo from dockerfile`,
... ...
@@ -186,6 +190,7 @@ RUN echo from dockerfile`,
186 186
 }
187 187
 
188 188
 func (s *DockerSuite) TestBuildApiBuildGitWithF(c *check.C) {
189
+	testRequires(c, DaemonIsLinux)
189 190
 	git, err := newFakeGit("repo", map[string]string{
190 191
 		"baz": `FROM busybox
191 192
 RUN echo from baz`,
... ...
@@ -21,6 +21,7 @@ import (
21 21
 )
22 22
 
23 23
 func (s *DockerSuite) TestContainerApiGetAll(c *check.C) {
24
+	testRequires(c, DaemonIsLinux)
24 25
 	startCount, err := getContainerCount()
25 26
 	if err != nil {
26 27
 		c.Fatalf("Cannot query container count: %v", err)
... ...
@@ -51,6 +52,7 @@ func (s *DockerSuite) TestContainerApiGetAll(c *check.C) {
51 51
 
52 52
 // regression test for empty json field being omitted #13691
53 53
 func (s *DockerSuite) TestContainerApiGetJSONNoFieldsOmitted(c *check.C) {
54
+	testRequires(c, DaemonIsLinux)
54 55
 	dockerCmd(c, "run", "busybox", "true")
55 56
 
56 57
 	status, body, err := sockRequest("GET", "/containers/json?all=1", nil)
... ...
@@ -87,6 +89,7 @@ type containerPs struct {
87 87
 
88 88
 // regression test for non-empty fields from #13901
89 89
 func (s *DockerSuite) TestContainerPsOmitFields(c *check.C) {
90
+	testRequires(c, DaemonIsLinux)
90 91
 	name := "pstest"
91 92
 	port := 80
92 93
 	dockerCmd(c, "run", "-d", "--name", name, "--expose", strconv.Itoa(port), "busybox", "top")
... ...
@@ -118,6 +121,7 @@ func (s *DockerSuite) TestContainerPsOmitFields(c *check.C) {
118 118
 }
119 119
 
120 120
 func (s *DockerSuite) TestContainerApiGetExport(c *check.C) {
121
+	testRequires(c, DaemonIsLinux)
121 122
 	name := "exportcontainer"
122 123
 	dockerCmd(c, "run", "--name", name, "busybox", "touch", "/test")
123 124
 
... ...
@@ -146,6 +150,7 @@ func (s *DockerSuite) TestContainerApiGetExport(c *check.C) {
146 146
 }
147 147
 
148 148
 func (s *DockerSuite) TestContainerApiGetChanges(c *check.C) {
149
+	testRequires(c, DaemonIsLinux)
149 150
 	name := "changescontainer"
150 151
 	dockerCmd(c, "run", "--name", name, "busybox", "rm", "/etc/passwd")
151 152
 
... ...
@@ -174,6 +179,7 @@ func (s *DockerSuite) TestContainerApiGetChanges(c *check.C) {
174 174
 }
175 175
 
176 176
 func (s *DockerSuite) TestContainerApiStartVolumeBinds(c *check.C) {
177
+	testRequires(c, DaemonIsLinux)
177 178
 	name := "testing"
178 179
 	config := map[string]interface{}{
179 180
 		"Image":   "busybox",
... ...
@@ -204,6 +210,7 @@ func (s *DockerSuite) TestContainerApiStartVolumeBinds(c *check.C) {
204 204
 
205 205
 // Test for GH#10618
206 206
 func (s *DockerSuite) TestContainerApiStartDupVolumeBinds(c *check.C) {
207
+	testRequires(c, DaemonIsLinux)
207 208
 	name := "testdups"
208 209
 	config := map[string]interface{}{
209 210
 		"Image":   "busybox",
... ...
@@ -230,6 +237,7 @@ func (s *DockerSuite) TestContainerApiStartDupVolumeBinds(c *check.C) {
230 230
 }
231 231
 
232 232
 func (s *DockerSuite) TestContainerApiStartVolumesFrom(c *check.C) {
233
+	testRequires(c, DaemonIsLinux)
233 234
 	volName := "voltst"
234 235
 	volPath := "/tmp"
235 236
 
... ...
@@ -267,6 +275,7 @@ func (s *DockerSuite) TestContainerApiStartVolumesFrom(c *check.C) {
267 267
 }
268 268
 
269 269
 func (s *DockerSuite) TestGetContainerStats(c *check.C) {
270
+	testRequires(c, DaemonIsLinux)
270 271
 	var (
271 272
 		name = "statscontainer"
272 273
 	)
... ...
@@ -306,6 +315,7 @@ func (s *DockerSuite) TestGetContainerStats(c *check.C) {
306 306
 }
307 307
 
308 308
 func (s *DockerSuite) TestGetContainerStatsRmRunning(c *check.C) {
309
+	testRequires(c, DaemonIsLinux)
309 310
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
310 311
 	id := strings.TrimSpace(out)
311 312
 
... ...
@@ -345,6 +355,7 @@ func (s *DockerSuite) TestGetContainerStatsRmRunning(c *check.C) {
345 345
 // previous test was just checking one stat entry so it didn't fail (stats with
346 346
 // stream false always return one stat)
347 347
 func (s *DockerSuite) TestGetContainerStatsStream(c *check.C) {
348
+	testRequires(c, DaemonIsLinux)
348 349
 	name := "statscontainer"
349 350
 	dockerCmd(c, "run", "-d", "--name", name, "busybox", "top")
350 351
 
... ...
@@ -381,6 +392,7 @@ func (s *DockerSuite) TestGetContainerStatsStream(c *check.C) {
381 381
 }
382 382
 
383 383
 func (s *DockerSuite) TestGetContainerStatsNoStream(c *check.C) {
384
+	testRequires(c, DaemonIsLinux)
384 385
 	name := "statscontainer"
385 386
 	dockerCmd(c, "run", "-d", "--name", name, "busybox", "top")
386 387
 
... ...
@@ -417,6 +429,7 @@ func (s *DockerSuite) TestGetContainerStatsNoStream(c *check.C) {
417 417
 }
418 418
 
419 419
 func (s *DockerSuite) TestGetStoppedContainerStats(c *check.C) {
420
+	testRequires(c, DaemonIsLinux)
420 421
 	// TODO: this test does nothing because we are c.Assert'ing in goroutine
421 422
 	var (
422 423
 		name = "statscontainer"
... ...
@@ -437,6 +450,7 @@ func (s *DockerSuite) TestGetStoppedContainerStats(c *check.C) {
437 437
 
438 438
 // #9981 - Allow a docker created volume (ie, one in /var/lib/docker/volumes) to be used to overwrite (via passing in Binds on api start) an existing volume
439 439
 func (s *DockerSuite) TestPostContainerBindNormalVolume(c *check.C) {
440
+	testRequires(c, DaemonIsLinux)
440 441
 	dockerCmd(c, "create", "-v", "/foo", "--name=one", "busybox")
441 442
 
442 443
 	fooDir, err := inspectMountSourceField("one", "/foo")
... ...
@@ -462,6 +476,7 @@ func (s *DockerSuite) TestPostContainerBindNormalVolume(c *check.C) {
462 462
 }
463 463
 
464 464
 func (s *DockerSuite) TestContainerApiPause(c *check.C) {
465
+	testRequires(c, DaemonIsLinux)
465 466
 	defer unpauseAllContainers()
466 467
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "sleep", "30")
467 468
 	ContainerID := strings.TrimSpace(out)
... ...
@@ -496,6 +511,7 @@ func (s *DockerSuite) TestContainerApiPause(c *check.C) {
496 496
 }
497 497
 
498 498
 func (s *DockerSuite) TestContainerApiTop(c *check.C) {
499
+	testRequires(c, DaemonIsLinux)
499 500
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "top")
500 501
 	id := strings.TrimSpace(string(out))
501 502
 	c.Assert(waitRun(id), check.IsNil)
... ...
@@ -532,6 +548,7 @@ func (s *DockerSuite) TestContainerApiTop(c *check.C) {
532 532
 }
533 533
 
534 534
 func (s *DockerSuite) TestContainerApiCommit(c *check.C) {
535
+	testRequires(c, DaemonIsLinux)
535 536
 	cName := "testapicommit"
536 537
 	dockerCmd(c, "run", "--name="+cName, "busybox", "/bin/sh", "-c", "touch /test")
537 538
 
... ...
@@ -560,6 +577,7 @@ func (s *DockerSuite) TestContainerApiCommit(c *check.C) {
560 560
 }
561 561
 
562 562
 func (s *DockerSuite) TestContainerApiCommitWithLabelInConfig(c *check.C) {
563
+	testRequires(c, DaemonIsLinux)
563 564
 	cName := "testapicommitwithconfig"
564 565
 	dockerCmd(c, "run", "--name="+cName, "busybox", "/bin/sh", "-c", "touch /test")
565 566
 
... ...
@@ -605,6 +623,7 @@ func (s *DockerSuite) TestContainerApiCommitWithLabelInConfig(c *check.C) {
605 605
 }
606 606
 
607 607
 func (s *DockerSuite) TestContainerApiBadPort(c *check.C) {
608
+	testRequires(c, DaemonIsLinux)
608 609
 	config := map[string]interface{}{
609 610
 		"Image": "busybox",
610 611
 		"Cmd":   []string{"/bin/sh", "-c", "echo test"},
... ...
@@ -631,6 +650,7 @@ func (s *DockerSuite) TestContainerApiBadPort(c *check.C) {
631 631
 }
632 632
 
633 633
 func (s *DockerSuite) TestContainerApiCreate(c *check.C) {
634
+	testRequires(c, DaemonIsLinux)
634 635
 	config := map[string]interface{}{
635 636
 		"Image": "busybox",
636 637
 		"Cmd":   []string{"/bin/sh", "-c", "touch /test && ls /test"},
... ...
@@ -668,6 +688,7 @@ func (s *DockerSuite) TestContainerApiCreateEmptyConfig(c *check.C) {
668 668
 }
669 669
 
670 670
 func (s *DockerSuite) TestContainerApiCreateWithHostName(c *check.C) {
671
+	testRequires(c, DaemonIsLinux)
671 672
 	hostName := "test-host"
672 673
 	config := map[string]interface{}{
673 674
 		"Image":    "busybox",
... ...
@@ -698,6 +719,7 @@ func (s *DockerSuite) TestContainerApiCreateWithHostName(c *check.C) {
698 698
 }
699 699
 
700 700
 func (s *DockerSuite) TestContainerApiCreateWithDomainName(c *check.C) {
701
+	testRequires(c, DaemonIsLinux)
701 702
 	domainName := "test-domain"
702 703
 	config := map[string]interface{}{
703 704
 		"Image":      "busybox",
... ...
@@ -728,6 +750,7 @@ func (s *DockerSuite) TestContainerApiCreateWithDomainName(c *check.C) {
728 728
 }
729 729
 
730 730
 func (s *DockerSuite) TestContainerApiCreateNetworkMode(c *check.C) {
731
+	testRequires(c, DaemonIsLinux)
731 732
 	UtilCreateNetworkMode(c, "host")
732 733
 	UtilCreateNetworkMode(c, "bridge")
733 734
 	UtilCreateNetworkMode(c, "container:web1")
... ...
@@ -763,6 +786,7 @@ func UtilCreateNetworkMode(c *check.C, networkMode string) {
763 763
 }
764 764
 
765 765
 func (s *DockerSuite) TestContainerApiCreateWithCpuSharesCpuset(c *check.C) {
766
+	testRequires(c, DaemonIsLinux)
766 767
 	config := map[string]interface{}{
767 768
 		"Image":      "busybox",
768 769
 		"CpuShares":  512,
... ...
@@ -796,6 +820,7 @@ func (s *DockerSuite) TestContainerApiCreateWithCpuSharesCpuset(c *check.C) {
796 796
 }
797 797
 
798 798
 func (s *DockerSuite) TestContainerApiVerifyHeader(c *check.C) {
799
+	testRequires(c, DaemonIsLinux)
799 800
 	config := map[string]interface{}{
800 801
 		"Image": "busybox",
801 802
 	}
... ...
@@ -829,6 +854,7 @@ func (s *DockerSuite) TestContainerApiVerifyHeader(c *check.C) {
829 829
 
830 830
 //Issue 14230. daemon should return 500 for invalid port syntax
831 831
 func (s *DockerSuite) TestContainerApiInvalidPortSyntax(c *check.C) {
832
+	testRequires(c, DaemonIsLinux)
832 833
 	config := `{
833 834
 				  "Image": "busybox",
834 835
 				  "HostConfig": {
... ...
@@ -854,6 +880,7 @@ func (s *DockerSuite) TestContainerApiInvalidPortSyntax(c *check.C) {
854 854
 // Issue 7941 - test to make sure a "null" in JSON is just ignored.
855 855
 // W/o this fix a null in JSON would be parsed into a string var as "null"
856 856
 func (s *DockerSuite) TestContainerApiPostCreateNull(c *check.C) {
857
+	testRequires(c, DaemonIsLinux)
857 858
 	config := `{
858 859
 		"Hostname":"",
859 860
 		"Domainname":"",
... ...
@@ -914,6 +941,7 @@ func (s *DockerSuite) TestContainerApiPostCreateNull(c *check.C) {
914 914
 }
915 915
 
916 916
 func (s *DockerSuite) TestCreateWithTooLowMemoryLimit(c *check.C) {
917
+	testRequires(c, DaemonIsLinux)
917 918
 	config := `{
918 919
 		"Image":     "busybox",
919 920
 		"Cmd":       "ls",
... ...
@@ -934,6 +962,7 @@ func (s *DockerSuite) TestCreateWithTooLowMemoryLimit(c *check.C) {
934 934
 }
935 935
 
936 936
 func (s *DockerSuite) TestStartWithTooLowMemoryLimit(c *check.C) {
937
+	testRequires(c, DaemonIsLinux)
937 938
 	out, _ := dockerCmd(c, "create", "busybox")
938 939
 
939 940
 	containerID := strings.TrimSpace(out)
... ...
@@ -955,6 +984,7 @@ func (s *DockerSuite) TestStartWithTooLowMemoryLimit(c *check.C) {
955 955
 }
956 956
 
957 957
 func (s *DockerSuite) TestContainerApiRename(c *check.C) {
958
+	testRequires(c, DaemonIsLinux)
958 959
 	out, _ := dockerCmd(c, "run", "--name", "TestContainerApiRename", "-d", "busybox", "sh")
959 960
 
960 961
 	containerID := strings.TrimSpace(out)
... ...
@@ -971,6 +1001,7 @@ func (s *DockerSuite) TestContainerApiRename(c *check.C) {
971 971
 }
972 972
 
973 973
 func (s *DockerSuite) TestContainerApiKill(c *check.C) {
974
+	testRequires(c, DaemonIsLinux)
974 975
 	name := "test-api-kill"
975 976
 	dockerCmd(c, "run", "-di", "--name", name, "busybox", "top")
976 977
 
... ...
@@ -988,6 +1019,7 @@ func (s *DockerSuite) TestContainerApiKill(c *check.C) {
988 988
 }
989 989
 
990 990
 func (s *DockerSuite) TestContainerApiRestart(c *check.C) {
991
+	testRequires(c, DaemonIsLinux)
991 992
 	name := "test-api-restart"
992 993
 	dockerCmd(c, "run", "-di", "--name", name, "busybox", "top")
993 994
 
... ...
@@ -1001,6 +1033,7 @@ func (s *DockerSuite) TestContainerApiRestart(c *check.C) {
1001 1001
 }
1002 1002
 
1003 1003
 func (s *DockerSuite) TestContainerApiRestartNotimeoutParam(c *check.C) {
1004
+	testRequires(c, DaemonIsLinux)
1004 1005
 	name := "test-api-restart-no-timeout-param"
1005 1006
 	out, _ := dockerCmd(c, "run", "-di", "--name", name, "busybox", "top")
1006 1007
 	id := strings.TrimSpace(out)
... ...
@@ -1016,6 +1049,7 @@ func (s *DockerSuite) TestContainerApiRestartNotimeoutParam(c *check.C) {
1016 1016
 }
1017 1017
 
1018 1018
 func (s *DockerSuite) TestContainerApiStart(c *check.C) {
1019
+	testRequires(c, DaemonIsLinux)
1019 1020
 	name := "testing-start"
1020 1021
 	config := map[string]interface{}{
1021 1022
 		"Image":     "busybox",
... ...
@@ -1039,6 +1073,7 @@ func (s *DockerSuite) TestContainerApiStart(c *check.C) {
1039 1039
 }
1040 1040
 
1041 1041
 func (s *DockerSuite) TestContainerApiStop(c *check.C) {
1042
+	testRequires(c, DaemonIsLinux)
1042 1043
 	name := "test-api-stop"
1043 1044
 	dockerCmd(c, "run", "-di", "--name", name, "busybox", "top")
1044 1045
 
... ...
@@ -1057,6 +1092,7 @@ func (s *DockerSuite) TestContainerApiStop(c *check.C) {
1057 1057
 }
1058 1058
 
1059 1059
 func (s *DockerSuite) TestContainerApiWait(c *check.C) {
1060
+	testRequires(c, DaemonIsLinux)
1060 1061
 	name := "test-api-wait"
1061 1062
 	dockerCmd(c, "run", "--name", name, "busybox", "sleep", "5")
1062 1063
 
... ...
@@ -1079,6 +1115,7 @@ func (s *DockerSuite) TestContainerApiWait(c *check.C) {
1079 1079
 }
1080 1080
 
1081 1081
 func (s *DockerSuite) TestContainerApiCopy(c *check.C) {
1082
+	testRequires(c, DaemonIsLinux)
1082 1083
 	name := "test-container-api-copy"
1083 1084
 	dockerCmd(c, "run", "--name", name, "busybox", "touch", "/test.txt")
1084 1085
 
... ...
@@ -1108,6 +1145,7 @@ func (s *DockerSuite) TestContainerApiCopy(c *check.C) {
1108 1108
 }
1109 1109
 
1110 1110
 func (s *DockerSuite) TestContainerApiCopyResourcePathEmpty(c *check.C) {
1111
+	testRequires(c, DaemonIsLinux)
1111 1112
 	name := "test-container-api-copy-resource-empty"
1112 1113
 	dockerCmd(c, "run", "--name", name, "busybox", "touch", "/test.txt")
1113 1114
 
... ...
@@ -1122,6 +1160,7 @@ func (s *DockerSuite) TestContainerApiCopyResourcePathEmpty(c *check.C) {
1122 1122
 }
1123 1123
 
1124 1124
 func (s *DockerSuite) TestContainerApiCopyResourcePathNotFound(c *check.C) {
1125
+	testRequires(c, DaemonIsLinux)
1125 1126
 	name := "test-container-api-copy-resource-not-found"
1126 1127
 	dockerCmd(c, "run", "--name", name, "busybox")
1127 1128
 
... ...
@@ -1146,6 +1185,7 @@ func (s *DockerSuite) TestContainerApiCopyContainerNotFound(c *check.C) {
1146 1146
 }
1147 1147
 
1148 1148
 func (s *DockerSuite) TestContainerApiDelete(c *check.C) {
1149
+	testRequires(c, DaemonIsLinux)
1149 1150
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
1150 1151
 
1151 1152
 	id := strings.TrimSpace(out)
... ...
@@ -1166,6 +1206,7 @@ func (s *DockerSuite) TestContainerApiDeleteNotExist(c *check.C) {
1166 1166
 }
1167 1167
 
1168 1168
 func (s *DockerSuite) TestContainerApiDeleteForce(c *check.C) {
1169
+	testRequires(c, DaemonIsLinux)
1169 1170
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
1170 1171
 
1171 1172
 	id := strings.TrimSpace(out)
... ...
@@ -1177,6 +1218,7 @@ func (s *DockerSuite) TestContainerApiDeleteForce(c *check.C) {
1177 1177
 }
1178 1178
 
1179 1179
 func (s *DockerSuite) TestContainerApiDeleteRemoveLinks(c *check.C) {
1180
+	testRequires(c, DaemonIsLinux)
1180 1181
 	out, _ := dockerCmd(c, "run", "-d", "--name", "tlink1", "busybox", "top")
1181 1182
 
1182 1183
 	id := strings.TrimSpace(out)
... ...
@@ -1207,6 +1249,7 @@ func (s *DockerSuite) TestContainerApiDeleteRemoveLinks(c *check.C) {
1207 1207
 }
1208 1208
 
1209 1209
 func (s *DockerSuite) TestContainerApiDeleteConflict(c *check.C) {
1210
+	testRequires(c, DaemonIsLinux)
1210 1211
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
1211 1212
 
1212 1213
 	id := strings.TrimSpace(out)
... ...
@@ -1218,6 +1261,7 @@ func (s *DockerSuite) TestContainerApiDeleteConflict(c *check.C) {
1218 1218
 }
1219 1219
 
1220 1220
 func (s *DockerSuite) TestContainerApiDeleteRemoveVolume(c *check.C) {
1221
+	testRequires(c, DaemonIsLinux)
1221 1222
 	testRequires(c, SameHostDaemon)
1222 1223
 
1223 1224
 	out, _ := dockerCmd(c, "run", "-d", "-v", "/testvolume", "busybox", "top")
... ...
@@ -1240,6 +1284,7 @@ func (s *DockerSuite) TestContainerApiDeleteRemoveVolume(c *check.C) {
1240 1240
 
1241 1241
 // Regression test for https://github.com/docker/docker/issues/6231
1242 1242
 func (s *DockerSuite) TestContainersApiChunkedEncoding(c *check.C) {
1243
+	testRequires(c, DaemonIsLinux)
1243 1244
 	out, _ := dockerCmd(c, "create", "-v", "/foo", "busybox", "true")
1244 1245
 	id := strings.TrimSpace(out)
1245 1246
 
... ...
@@ -1290,6 +1335,7 @@ func (s *DockerSuite) TestContainersApiChunkedEncoding(c *check.C) {
1290 1290
 }
1291 1291
 
1292 1292
 func (s *DockerSuite) TestPostContainerStop(c *check.C) {
1293
+	testRequires(c, DaemonIsLinux)
1293 1294
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
1294 1295
 
1295 1296
 	containerID := strings.TrimSpace(out)
... ...
@@ -1307,6 +1353,7 @@ func (s *DockerSuite) TestPostContainerStop(c *check.C) {
1307 1307
 
1308 1308
 // #14170
1309 1309
 func (s *DockerSuite) TestPostContainersCreateWithStringOrSliceEntrypoint(c *check.C) {
1310
+	testRequires(c, DaemonIsLinux)
1310 1311
 	config := struct {
1311 1312
 		Image      string
1312 1313
 		Entrypoint string
... ...
@@ -1330,6 +1377,7 @@ func (s *DockerSuite) TestPostContainersCreateWithStringOrSliceEntrypoint(c *che
1330 1330
 
1331 1331
 // #14170
1332 1332
 func (s *DockerSuite) TestPostContainersCreateWithStringOrSliceCmd(c *check.C) {
1333
+	testRequires(c, DaemonIsLinux)
1333 1334
 	config := struct {
1334 1335
 		Image      string
1335 1336
 		Entrypoint string
... ...
@@ -1352,6 +1400,7 @@ func (s *DockerSuite) TestPostContainersCreateWithStringOrSliceCmd(c *check.C) {
1352 1352
 
1353 1353
 // regression #14318
1354 1354
 func (s *DockerSuite) TestPostContainersCreateWithStringOrSliceCapAddDrop(c *check.C) {
1355
+	testRequires(c, DaemonIsLinux)
1355 1356
 	config := struct {
1356 1357
 		Image   string
1357 1358
 		CapAdd  string
... ...
@@ -1373,6 +1422,7 @@ func (s *DockerSuite) TestPostContainersCreateWithStringOrSliceCapAddDrop(c *che
1373 1373
 
1374 1374
 // #14640
1375 1375
 func (s *DockerSuite) TestPostContainersStartWithoutLinksInHostConfig(c *check.C) {
1376
+	testRequires(c, DaemonIsLinux)
1376 1377
 	name := "test-host-config-links"
1377 1378
 	dockerCmd(c, "create", "--name", name, "busybox", "top")
1378 1379
 
... ...
@@ -1388,6 +1438,7 @@ func (s *DockerSuite) TestPostContainersStartWithoutLinksInHostConfig(c *check.C
1388 1388
 
1389 1389
 // #14640
1390 1390
 func (s *DockerSuite) TestPostContainersStartWithLinksInHostConfig(c *check.C) {
1391
+	testRequires(c, DaemonIsLinux)
1391 1392
 	name := "test-host-config-links"
1392 1393
 	dockerCmd(c, "run", "--name", "foo", "-d", "busybox", "top")
1393 1394
 	dockerCmd(c, "create", "--name", name, "--link", "foo:bar", "busybox", "top")
... ...
@@ -1404,6 +1455,7 @@ func (s *DockerSuite) TestPostContainersStartWithLinksInHostConfig(c *check.C) {
1404 1404
 
1405 1405
 // #14640
1406 1406
 func (s *DockerSuite) TestPostContainersStartWithLinksInHostConfigIdLinked(c *check.C) {
1407
+	testRequires(c, DaemonIsLinux)
1407 1408
 	name := "test-host-config-links"
1408 1409
 	out, _ := dockerCmd(c, "run", "--name", "link0", "-d", "busybox", "top")
1409 1410
 	id := strings.TrimSpace(out)
... ...
@@ -1421,6 +1473,7 @@ func (s *DockerSuite) TestPostContainersStartWithLinksInHostConfigIdLinked(c *ch
1421 1421
 
1422 1422
 // #14915
1423 1423
 func (s *DockerSuite) TestContainersApiCreateNoHostConfig118(c *check.C) {
1424
+	testRequires(c, DaemonIsLinux)
1424 1425
 	config := struct {
1425 1426
 		Image string
1426 1427
 	}{"busybox"}
... ...
@@ -13,6 +13,7 @@ import (
13 13
 )
14 14
 
15 15
 func (s *DockerSuite) TestExecResizeApiHeightWidthNoInt(c *check.C) {
16
+	testRequires(c, DaemonIsLinux)
16 17
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
17 18
 	cleanedContainerID := strings.TrimSpace(out)
18 19
 
... ...
@@ -24,6 +25,7 @@ func (s *DockerSuite) TestExecResizeApiHeightWidthNoInt(c *check.C) {
24 24
 
25 25
 // Part of #14845
26 26
 func (s *DockerSuite) TestExecResizeImmediatelyAfterExecStart(c *check.C) {
27
+	testRequires(c, DaemonIsLinux)
27 28
 	testRequires(c, NativeExecDriver)
28 29
 
29 30
 	name := "exec_resize_test"
... ...
@@ -13,6 +13,7 @@ import (
13 13
 
14 14
 // Regression test for #9414
15 15
 func (s *DockerSuite) TestExecApiCreateNoCmd(c *check.C) {
16
+	testRequires(c, DaemonIsLinux)
16 17
 	name := "exec_test"
17 18
 	dockerCmd(c, "run", "-d", "-t", "--name", name, "busybox", "/bin/sh")
18 19
 
... ...
@@ -26,6 +27,7 @@ func (s *DockerSuite) TestExecApiCreateNoCmd(c *check.C) {
26 26
 }
27 27
 
28 28
 func (s *DockerSuite) TestExecApiCreateNoValidContentType(c *check.C) {
29
+	testRequires(c, DaemonIsLinux)
29 30
 	name := "exec_test"
30 31
 	dockerCmd(c, "run", "-d", "-t", "--name", name, "busybox", "/bin/sh")
31 32
 
... ...
@@ -11,6 +11,7 @@ import (
11 11
 )
12 12
 
13 13
 func (s *DockerSuite) TestApiImagesFilter(c *check.C) {
14
+	testRequires(c, DaemonIsLinux)
14 15
 	name := "utest:tag1"
15 16
 	name2 := "utest/docker:tag2"
16 17
 	name3 := "utest:5000/docker:tag3"
... ...
@@ -50,6 +51,7 @@ func (s *DockerSuite) TestApiImagesFilter(c *check.C) {
50 50
 
51 51
 func (s *DockerSuite) TestApiImagesSaveAndLoad(c *check.C) {
52 52
 	testRequires(c, Network)
53
+	testRequires(c, DaemonIsLinux)
53 54
 	out, err := buildImage("saveandload", "FROM hello-world\nENV FOO bar", false)
54 55
 	if err != nil {
55 56
 		c.Fatal(err)
... ...
@@ -78,6 +80,7 @@ func (s *DockerSuite) TestApiImagesSaveAndLoad(c *check.C) {
78 78
 
79 79
 func (s *DockerSuite) TestApiImagesDelete(c *check.C) {
80 80
 	testRequires(c, Network)
81
+	testRequires(c, DaemonIsLinux)
81 82
 	name := "test-api-images-delete"
82 83
 	out, err := buildImage(name, "FROM hello-world\nENV FOO bar", false)
83 84
 	if err != nil {
... ...
@@ -102,6 +105,7 @@ func (s *DockerSuite) TestApiImagesDelete(c *check.C) {
102 102
 
103 103
 func (s *DockerSuite) TestApiImagesHistory(c *check.C) {
104 104
 	testRequires(c, Network)
105
+	testRequires(c, DaemonIsLinux)
105 106
 	name := "test-api-images-history"
106 107
 	out, err := buildImage(name, "FROM hello-world\nENV FOO bar", false)
107 108
 	c.Assert(err, check.IsNil)
... ...
@@ -10,6 +10,7 @@ import (
10 10
 )
11 11
 
12 12
 func (s *DockerSuite) TestInspectApiContainerResponse(c *check.C) {
13
+	testRequires(c, DaemonIsLinux)
13 14
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "true")
14 15
 
15 16
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -12,6 +12,7 @@ import (
12 12
 )
13 13
 
14 14
 func (s *DockerSuite) TestLogsApiWithStdout(c *check.C) {
15
+	testRequires(c, DaemonIsLinux)
15 16
 	out, _ := dockerCmd(c, "run", "-d", "-t", "busybox", "/bin/sh", "-c", "while true; do echo hello; sleep 1; done")
16 17
 	id := strings.TrimSpace(out)
17 18
 	c.Assert(waitRun(id), check.IsNil)
... ...
@@ -51,6 +52,7 @@ func (s *DockerSuite) TestLogsApiWithStdout(c *check.C) {
51 51
 }
52 52
 
53 53
 func (s *DockerSuite) TestLogsApiNoStdoutNorStderr(c *check.C) {
54
+	testRequires(c, DaemonIsLinux)
54 55
 	name := "logs_test"
55 56
 	dockerCmd(c, "run", "-d", "-t", "--name", name, "busybox", "/bin/sh")
56 57
 
... ...
@@ -66,6 +68,7 @@ func (s *DockerSuite) TestLogsApiNoStdoutNorStderr(c *check.C) {
66 66
 
67 67
 // Regression test for #12704
68 68
 func (s *DockerSuite) TestLogsApiFollowEmptyOutput(c *check.C) {
69
+	testRequires(c, DaemonIsLinux)
69 70
 	name := "logs_test"
70 71
 	t0 := time.Now()
71 72
 	dockerCmd(c, "run", "-d", "-t", "--name", name, "busybox", "sleep", "10")
... ...
@@ -8,6 +8,7 @@ import (
8 8
 )
9 9
 
10 10
 func (s *DockerSuite) TestResizeApiResponse(c *check.C) {
11
+	testRequires(c, DaemonIsLinux)
11 12
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
12 13
 	cleanedContainerID := strings.TrimSpace(out)
13 14
 
... ...
@@ -18,6 +19,7 @@ func (s *DockerSuite) TestResizeApiResponse(c *check.C) {
18 18
 }
19 19
 
20 20
 func (s *DockerSuite) TestResizeApiHeightWidthNoInt(c *check.C) {
21
+	testRequires(c, DaemonIsLinux)
21 22
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
22 23
 	cleanedContainerID := strings.TrimSpace(out)
23 24
 
... ...
@@ -28,6 +30,7 @@ func (s *DockerSuite) TestResizeApiHeightWidthNoInt(c *check.C) {
28 28
 }
29 29
 
30 30
 func (s *DockerSuite) TestResizeApiResponseWhenContainerNotStarted(c *check.C) {
31
+	testRequires(c, DaemonIsLinux)
31 32
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "true")
32 33
 	cleanedContainerID := strings.TrimSpace(out)
33 34
 
... ...
@@ -14,6 +14,7 @@ import (
14 14
 )
15 15
 
16 16
 func (s *DockerSuite) TestCliStatsNoStreamGetCpu(c *check.C) {
17
+	testRequires(c, DaemonIsLinux)
17 18
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "while true;do echo 'Hello'; usleep 100000; done")
18 19
 
19 20
 	id := strings.TrimSpace(out)
... ...
@@ -39,6 +40,7 @@ func (s *DockerSuite) TestCliStatsNoStreamGetCpu(c *check.C) {
39 39
 }
40 40
 
41 41
 func (s *DockerSuite) TestStoppedContainerStatsGoroutines(c *check.C) {
42
+	testRequires(c, DaemonIsLinux)
42 43
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "echo 1")
43 44
 	id := strings.TrimSpace(out)
44 45
 
... ...
@@ -75,6 +77,7 @@ func (s *DockerSuite) TestStoppedContainerStatsGoroutines(c *check.C) {
75 75
 
76 76
 func (s *DockerSuite) TestApiNetworkStats(c *check.C) {
77 77
 	testRequires(c, SameHostDaemon)
78
+	testRequires(c, DaemonIsLinux)
78 79
 	// Run container for 30 secs
79 80
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
80 81
 	id := strings.TrimSpace(out)
... ...
@@ -10,6 +10,7 @@ import (
10 10
 )
11 11
 
12 12
 func (s *DockerSuite) TestVolumesApiList(c *check.C) {
13
+	testRequires(c, DaemonIsLinux)
13 14
 	dockerCmd(c, "run", "-d", "-v", "/foo", "busybox")
14 15
 
15 16
 	status, b, err := sockRequest("GET", "/volumes", nil)
... ...
@@ -23,6 +24,7 @@ func (s *DockerSuite) TestVolumesApiList(c *check.C) {
23 23
 }
24 24
 
25 25
 func (s *DockerSuite) TestVolumesApiCreate(c *check.C) {
26
+	testRequires(c, DaemonIsLinux)
26 27
 	config := types.VolumeCreateRequest{
27 28
 		Name: "test",
28 29
 	}
... ...
@@ -38,6 +40,7 @@ func (s *DockerSuite) TestVolumesApiCreate(c *check.C) {
38 38
 }
39 39
 
40 40
 func (s *DockerSuite) TestVolumesApiRemove(c *check.C) {
41
+	testRequires(c, DaemonIsLinux)
41 42
 	dockerCmd(c, "run", "-d", "-v", "/foo", "--name=test", "busybox")
42 43
 
43 44
 	status, b, err := sockRequest("GET", "/volumes", nil)
... ...
@@ -61,6 +64,7 @@ func (s *DockerSuite) TestVolumesApiRemove(c *check.C) {
61 61
 }
62 62
 
63 63
 func (s *DockerSuite) TestVolumesApiInspect(c *check.C) {
64
+	testRequires(c, DaemonIsLinux)
64 65
 	config := types.VolumeCreateRequest{
65 66
 		Name: "test",
66 67
 	}
... ...
@@ -15,6 +15,7 @@ import (
15 15
 const attachWait = 5 * time.Second
16 16
 
17 17
 func (s *DockerSuite) TestAttachMultipleAndRestart(c *check.C) {
18
+	testRequires(c, DaemonIsLinux)
18 19
 
19 20
 	endGroup := &sync.WaitGroup{}
20 21
 	startGroup := &sync.WaitGroup{}
... ...
@@ -87,6 +88,7 @@ func (s *DockerSuite) TestAttachMultipleAndRestart(c *check.C) {
87 87
 }
88 88
 
89 89
 func (s *DockerSuite) TestAttachTtyWithoutStdin(c *check.C) {
90
+	testRequires(c, DaemonIsLinux)
90 91
 	out, _ := dockerCmd(c, "run", "-d", "-ti", "busybox")
91 92
 
92 93
 	id := strings.TrimSpace(out)
... ...
@@ -128,6 +130,7 @@ func (s *DockerSuite) TestAttachTtyWithoutStdin(c *check.C) {
128 128
 }
129 129
 
130 130
 func (s *DockerSuite) TestAttachDisconnect(c *check.C) {
131
+	testRequires(c, DaemonIsLinux)
131 132
 	out, _ := dockerCmd(c, "run", "-di", "busybox", "/bin/cat")
132 133
 	id := strings.TrimSpace(out)
133 134
 
... ...
@@ -25,6 +25,7 @@ import (
25 25
 )
26 26
 
27 27
 func (s *DockerSuite) TestBuildJSONEmptyRun(c *check.C) {
28
+	testRequires(c, DaemonIsLinux)
28 29
 	name := "testbuildjsonemptyrun"
29 30
 
30 31
 	_, err := buildImage(
... ...
@@ -42,6 +43,7 @@ func (s *DockerSuite) TestBuildJSONEmptyRun(c *check.C) {
42 42
 }
43 43
 
44 44
 func (s *DockerSuite) TestBuildEmptyWhitespace(c *check.C) {
45
+	testRequires(c, DaemonIsLinux)
45 46
 	name := "testbuildemptywhitespace"
46 47
 
47 48
 	_, err := buildImage(
... ...
@@ -61,6 +63,7 @@ func (s *DockerSuite) TestBuildEmptyWhitespace(c *check.C) {
61 61
 }
62 62
 
63 63
 func (s *DockerSuite) TestBuildShCmdJSONEntrypoint(c *check.C) {
64
+	testRequires(c, DaemonIsLinux)
64 65
 	name := "testbuildshcmdjsonentrypoint"
65 66
 
66 67
 	_, err := buildImage(
... ...
@@ -85,6 +88,7 @@ func (s *DockerSuite) TestBuildShCmdJSONEntrypoint(c *check.C) {
85 85
 }
86 86
 
87 87
 func (s *DockerSuite) TestBuildEnvironmentReplacementUser(c *check.C) {
88
+	testRequires(c, DaemonIsLinux)
88 89
 	name := "testbuildenvironmentreplacement"
89 90
 
90 91
 	_, err := buildImage(name, `
... ...
@@ -108,6 +112,7 @@ func (s *DockerSuite) TestBuildEnvironmentReplacementUser(c *check.C) {
108 108
 }
109 109
 
110 110
 func (s *DockerSuite) TestBuildEnvironmentReplacementVolume(c *check.C) {
111
+	testRequires(c, DaemonIsLinux)
111 112
 	name := "testbuildenvironmentreplacement"
112 113
 
113 114
 	_, err := buildImage(name, `
... ...
@@ -137,6 +142,7 @@ func (s *DockerSuite) TestBuildEnvironmentReplacementVolume(c *check.C) {
137 137
 }
138 138
 
139 139
 func (s *DockerSuite) TestBuildEnvironmentReplacementExpose(c *check.C) {
140
+	testRequires(c, DaemonIsLinux)
140 141
 	name := "testbuildenvironmentreplacement"
141 142
 
142 143
 	_, err := buildImage(name, `
... ...
@@ -166,6 +172,7 @@ func (s *DockerSuite) TestBuildEnvironmentReplacementExpose(c *check.C) {
166 166
 }
167 167
 
168 168
 func (s *DockerSuite) TestBuildEnvironmentReplacementWorkdir(c *check.C) {
169
+	testRequires(c, DaemonIsLinux)
169 170
 	name := "testbuildenvironmentreplacement"
170 171
 
171 172
 	_, err := buildImage(name, `
... ...
@@ -182,6 +189,7 @@ func (s *DockerSuite) TestBuildEnvironmentReplacementWorkdir(c *check.C) {
182 182
 }
183 183
 
184 184
 func (s *DockerSuite) TestBuildEnvironmentReplacementAddCopy(c *check.C) {
185
+	testRequires(c, DaemonIsLinux)
185 186
 	name := "testbuildenvironmentreplacement"
186 187
 
187 188
 	ctx, err := fakeContext(`
... ...
@@ -216,6 +224,7 @@ func (s *DockerSuite) TestBuildEnvironmentReplacementAddCopy(c *check.C) {
216 216
 }
217 217
 
218 218
 func (s *DockerSuite) TestBuildEnvironmentReplacementEnv(c *check.C) {
219
+	testRequires(c, DaemonIsLinux)
219 220
 	name := "testbuildenvironmentreplacement"
220 221
 
221 222
 	_, err := buildImage(name,
... ...
@@ -283,6 +292,7 @@ func (s *DockerSuite) TestBuildEnvironmentReplacementEnv(c *check.C) {
283 283
 }
284 284
 
285 285
 func (s *DockerSuite) TestBuildHandleEscapes(c *check.C) {
286
+	testRequires(c, DaemonIsLinux)
286 287
 	name := "testbuildhandleescapes"
287 288
 
288 289
 	_, err := buildImage(name,
... ...
@@ -370,6 +380,7 @@ func (s *DockerSuite) TestBuildHandleEscapes(c *check.C) {
370 370
 }
371 371
 
372 372
 func (s *DockerSuite) TestBuildOnBuildLowercase(c *check.C) {
373
+	testRequires(c, DaemonIsLinux)
373 374
 	name := "testbuildonbuildlowercase"
374 375
 	name2 := "testbuildonbuildlowercase2"
375 376
 
... ...
@@ -402,6 +413,7 @@ func (s *DockerSuite) TestBuildOnBuildLowercase(c *check.C) {
402 402
 }
403 403
 
404 404
 func (s *DockerSuite) TestBuildEnvEscapes(c *check.C) {
405
+	testRequires(c, DaemonIsLinux)
405 406
 	name := "testbuildenvescapes"
406 407
 	_, err := buildImage(name,
407 408
 		`
... ...
@@ -424,6 +436,7 @@ func (s *DockerSuite) TestBuildEnvEscapes(c *check.C) {
424 424
 }
425 425
 
426 426
 func (s *DockerSuite) TestBuildEnvOverwrite(c *check.C) {
427
+	testRequires(c, DaemonIsLinux)
427 428
 	name := "testbuildenvoverwrite"
428 429
 
429 430
 	_, err := buildImage(name,
... ...
@@ -447,6 +460,7 @@ func (s *DockerSuite) TestBuildEnvOverwrite(c *check.C) {
447 447
 }
448 448
 
449 449
 func (s *DockerSuite) TestBuildOnBuildForbiddenMaintainerInSourceImage(c *check.C) {
450
+	testRequires(c, DaemonIsLinux)
450 451
 	name := "testbuildonbuildforbiddenmaintainerinsourceimage"
451 452
 
452 453
 	out, _ := dockerCmd(c, "create", "busybox", "true")
... ...
@@ -469,6 +483,7 @@ func (s *DockerSuite) TestBuildOnBuildForbiddenMaintainerInSourceImage(c *check.
469 469
 }
470 470
 
471 471
 func (s *DockerSuite) TestBuildOnBuildForbiddenFromInSourceImage(c *check.C) {
472
+	testRequires(c, DaemonIsLinux)
472 473
 	name := "testbuildonbuildforbiddenfrominsourceimage"
473 474
 
474 475
 	out, _ := dockerCmd(c, "create", "busybox", "true")
... ...
@@ -491,6 +506,7 @@ func (s *DockerSuite) TestBuildOnBuildForbiddenFromInSourceImage(c *check.C) {
491 491
 }
492 492
 
493 493
 func (s *DockerSuite) TestBuildOnBuildForbiddenChainedInSourceImage(c *check.C) {
494
+	testRequires(c, DaemonIsLinux)
494 495
 	name := "testbuildonbuildforbiddenchainedinsourceimage"
495 496
 
496 497
 	out, _ := dockerCmd(c, "create", "busybox", "true")
... ...
@@ -513,6 +529,7 @@ func (s *DockerSuite) TestBuildOnBuildForbiddenChainedInSourceImage(c *check.C)
513 513
 }
514 514
 
515 515
 func (s *DockerSuite) TestBuildOnBuildCmdEntrypointJSON(c *check.C) {
516
+	testRequires(c, DaemonIsLinux)
516 517
 	name1 := "onbuildcmd"
517 518
 	name2 := "onbuildgenerated"
518 519
 
... ...
@@ -542,6 +559,7 @@ ONBUILD RUN ["true"]`,
542 542
 }
543 543
 
544 544
 func (s *DockerSuite) TestBuildOnBuildEntrypointJSON(c *check.C) {
545
+	testRequires(c, DaemonIsLinux)
545 546
 	name1 := "onbuildcmd"
546 547
 	name2 := "onbuildgenerated"
547 548
 
... ...
@@ -569,6 +587,7 @@ ONBUILD ENTRYPOINT ["echo"]`,
569 569
 }
570 570
 
571 571
 func (s *DockerSuite) TestBuildCacheAdd(c *check.C) {
572
+	testRequires(c, DaemonIsLinux)
572 573
 	name := "testbuildtwoimageswithadd"
573 574
 	server, err := fakeStorage(map[string]string{
574 575
 		"robots.txt": "hello",
... ...
@@ -603,6 +622,7 @@ func (s *DockerSuite) TestBuildCacheAdd(c *check.C) {
603 603
 }
604 604
 
605 605
 func (s *DockerSuite) TestBuildLastModified(c *check.C) {
606
+	testRequires(c, DaemonIsLinux)
606 607
 	name := "testbuildlastmodified"
607 608
 
608 609
 	server, err := fakeStorage(map[string]string{
... ...
@@ -668,6 +688,7 @@ RUN ls -le /file`
668 668
 }
669 669
 
670 670
 func (s *DockerSuite) TestBuildSixtySteps(c *check.C) {
671
+	testRequires(c, DaemonIsLinux)
671 672
 	name := "foobuildsixtysteps"
672 673
 	ctx, err := fakeContext("FROM scratch\n"+strings.Repeat("ADD foo /\n", 60),
673 674
 		map[string]string{
... ...
@@ -684,6 +705,7 @@ func (s *DockerSuite) TestBuildSixtySteps(c *check.C) {
684 684
 }
685 685
 
686 686
 func (s *DockerSuite) TestBuildAddSingleFileToRoot(c *check.C) {
687
+	testRequires(c, DaemonIsLinux)
687 688
 	name := "testaddimg"
688 689
 	ctx, err := fakeContext(fmt.Sprintf(`FROM busybox
689 690
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -709,6 +731,7 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`, expecte
709 709
 
710 710
 // Issue #3960: "ADD src ." hangs
711 711
 func (s *DockerSuite) TestBuildAddSingleFileToWorkdir(c *check.C) {
712
+	testRequires(c, DaemonIsLinux)
712 713
 	name := "testaddsinglefiletoworkdir"
713 714
 	ctx, err := fakeContext(`FROM busybox
714 715
 ADD test_file .`,
... ...
@@ -735,6 +758,7 @@ ADD test_file .`,
735 735
 }
736 736
 
737 737
 func (s *DockerSuite) TestBuildAddSingleFileToExistDir(c *check.C) {
738
+	testRequires(c, DaemonIsLinux)
738 739
 	name := "testaddsinglefiletoexistdir"
739 740
 	ctx, err := fakeContext(`FROM busybox
740 741
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -760,6 +784,7 @@ RUN [ $(ls -l /exists/exists_file | awk '{print $3":"$4}') = 'dockerio:dockerio'
760 760
 }
761 761
 
762 762
 func (s *DockerSuite) TestBuildCopyAddMultipleFiles(c *check.C) {
763
+	testRequires(c, DaemonIsLinux)
763 764
 	server, err := fakeStorage(map[string]string{
764 765
 		"robots.txt": "hello",
765 766
 	})
... ...
@@ -804,6 +829,7 @@ RUN [ $(ls -l /exists/exists_file | awk '{print $3":"$4}') = 'dockerio:dockerio'
804 804
 }
805 805
 
806 806
 func (s *DockerSuite) TestBuildAddMultipleFilesToFile(c *check.C) {
807
+	testRequires(c, DaemonIsLinux)
807 808
 	name := "testaddmultiplefilestofile"
808 809
 	ctx, err := fakeContext(`FROM scratch
809 810
 	ADD file1.txt file2.txt test
... ...
@@ -825,6 +851,7 @@ func (s *DockerSuite) TestBuildAddMultipleFilesToFile(c *check.C) {
825 825
 }
826 826
 
827 827
 func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFile(c *check.C) {
828
+	testRequires(c, DaemonIsLinux)
828 829
 	name := "testjsonaddmultiplefilestofile"
829 830
 	ctx, err := fakeContext(`FROM scratch
830 831
 	ADD ["file1.txt", "file2.txt", "test"]
... ...
@@ -846,6 +873,7 @@ func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFile(c *check.C) {
846 846
 }
847 847
 
848 848
 func (s *DockerSuite) TestBuildAddMultipleFilesToFileWild(c *check.C) {
849
+	testRequires(c, DaemonIsLinux)
849 850
 	name := "testaddmultiplefilestofilewild"
850 851
 	ctx, err := fakeContext(`FROM scratch
851 852
 	ADD file*.txt test
... ...
@@ -867,6 +895,7 @@ func (s *DockerSuite) TestBuildAddMultipleFilesToFileWild(c *check.C) {
867 867
 }
868 868
 
869 869
 func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFileWild(c *check.C) {
870
+	testRequires(c, DaemonIsLinux)
870 871
 	name := "testjsonaddmultiplefilestofilewild"
871 872
 	ctx, err := fakeContext(`FROM scratch
872 873
 	ADD ["file*.txt", "test"]
... ...
@@ -888,6 +917,7 @@ func (s *DockerSuite) TestBuildJSONAddMultipleFilesToFileWild(c *check.C) {
888 888
 }
889 889
 
890 890
 func (s *DockerSuite) TestBuildCopyMultipleFilesToFile(c *check.C) {
891
+	testRequires(c, DaemonIsLinux)
891 892
 	name := "testcopymultiplefilestofile"
892 893
 	ctx, err := fakeContext(`FROM scratch
893 894
 	COPY file1.txt file2.txt test
... ...
@@ -909,6 +939,7 @@ func (s *DockerSuite) TestBuildCopyMultipleFilesToFile(c *check.C) {
909 909
 }
910 910
 
911 911
 func (s *DockerSuite) TestBuildJSONCopyMultipleFilesToFile(c *check.C) {
912
+	testRequires(c, DaemonIsLinux)
912 913
 	name := "testjsoncopymultiplefilestofile"
913 914
 	ctx, err := fakeContext(`FROM scratch
914 915
 	COPY ["file1.txt", "file2.txt", "test"]
... ...
@@ -930,6 +961,7 @@ func (s *DockerSuite) TestBuildJSONCopyMultipleFilesToFile(c *check.C) {
930 930
 }
931 931
 
932 932
 func (s *DockerSuite) TestBuildAddFileWithWhitespace(c *check.C) {
933
+	testRequires(c, DaemonIsLinux)
933 934
 	name := "testaddfilewithwhitespace"
934 935
 	ctx, err := fakeContext(`FROM busybox
935 936
 RUN mkdir "/test dir"
... ...
@@ -965,6 +997,7 @@ RUN [ $(cat "/test dir/test_file6") = 'test6' ]`,
965 965
 }
966 966
 
967 967
 func (s *DockerSuite) TestBuildCopyFileWithWhitespace(c *check.C) {
968
+	testRequires(c, DaemonIsLinux)
968 969
 	name := "testcopyfilewithwhitespace"
969 970
 	ctx, err := fakeContext(`FROM busybox
970 971
 RUN mkdir "/test dir"
... ...
@@ -1000,6 +1033,7 @@ RUN [ $(cat "/test dir/test_file6") = 'test6' ]`,
1000 1000
 }
1001 1001
 
1002 1002
 func (s *DockerSuite) TestBuildAddMultipleFilesToFileWithWhitespace(c *check.C) {
1003
+	testRequires(c, DaemonIsLinux)
1003 1004
 	name := "testaddmultiplefilestofilewithwhitespace"
1004 1005
 	ctx, err := fakeContext(`FROM busybox
1005 1006
 	ADD [ "test file1", "test file2", "test" ]
... ...
@@ -1021,6 +1055,7 @@ func (s *DockerSuite) TestBuildAddMultipleFilesToFileWithWhitespace(c *check.C)
1021 1021
 }
1022 1022
 
1023 1023
 func (s *DockerSuite) TestBuildCopyMultipleFilesToFileWithWhitespace(c *check.C) {
1024
+	testRequires(c, DaemonIsLinux)
1024 1025
 	name := "testcopymultiplefilestofilewithwhitespace"
1025 1026
 	ctx, err := fakeContext(`FROM busybox
1026 1027
 	COPY [ "test file1", "test file2", "test" ]
... ...
@@ -1042,6 +1077,7 @@ func (s *DockerSuite) TestBuildCopyMultipleFilesToFileWithWhitespace(c *check.C)
1042 1042
 }
1043 1043
 
1044 1044
 func (s *DockerSuite) TestBuildCopyWildcard(c *check.C) {
1045
+	testRequires(c, DaemonIsLinux)
1045 1046
 	name := "testcopywildcard"
1046 1047
 	server, err := fakeStorage(map[string]string{
1047 1048
 		"robots.txt": "hello",
... ...
@@ -1092,6 +1128,7 @@ func (s *DockerSuite) TestBuildCopyWildcard(c *check.C) {
1092 1092
 }
1093 1093
 
1094 1094
 func (s *DockerSuite) TestBuildCopyWildcardNoFind(c *check.C) {
1095
+	testRequires(c, DaemonIsLinux)
1095 1096
 	name := "testcopywildcardnofind"
1096 1097
 	ctx, err := fakeContext(`FROM busybox
1097 1098
 	COPY file*.txt /tmp/
... ...
@@ -1112,6 +1149,7 @@ func (s *DockerSuite) TestBuildCopyWildcardNoFind(c *check.C) {
1112 1112
 }
1113 1113
 
1114 1114
 func (s *DockerSuite) TestBuildCopyWildcardInName(c *check.C) {
1115
+	testRequires(c, DaemonIsLinux)
1115 1116
 	name := "testcopywildcardinname"
1116 1117
 	ctx, err := fakeContext(`FROM busybox
1117 1118
 	COPY *.txt /tmp/
... ...
@@ -1136,6 +1174,7 @@ func (s *DockerSuite) TestBuildCopyWildcardInName(c *check.C) {
1136 1136
 }
1137 1137
 
1138 1138
 func (s *DockerSuite) TestBuildCopyWildcardCache(c *check.C) {
1139
+	testRequires(c, DaemonIsLinux)
1139 1140
 	name := "testcopywildcardcache"
1140 1141
 	ctx, err := fakeContext(`FROM busybox
1141 1142
 	COPY file1.txt /tmp/`,
... ...
@@ -1169,6 +1208,7 @@ func (s *DockerSuite) TestBuildCopyWildcardCache(c *check.C) {
1169 1169
 }
1170 1170
 
1171 1171
 func (s *DockerSuite) TestBuildAddSingleFileToNonExistingDir(c *check.C) {
1172
+	testRequires(c, DaemonIsLinux)
1172 1173
 	name := "testaddsinglefiletononexistingdir"
1173 1174
 	ctx, err := fakeContext(`FROM busybox
1174 1175
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -1194,6 +1234,7 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`,
1194 1194
 }
1195 1195
 
1196 1196
 func (s *DockerSuite) TestBuildAddDirContentToRoot(c *check.C) {
1197
+	testRequires(c, DaemonIsLinux)
1197 1198
 	name := "testadddircontenttoroot"
1198 1199
 	ctx, err := fakeContext(`FROM busybox
1199 1200
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -1217,6 +1258,7 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`,
1217 1217
 }
1218 1218
 
1219 1219
 func (s *DockerSuite) TestBuildAddDirContentToExistingDir(c *check.C) {
1220
+	testRequires(c, DaemonIsLinux)
1220 1221
 	name := "testadddircontenttoexistingdir"
1221 1222
 	ctx, err := fakeContext(`FROM busybox
1222 1223
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -1242,6 +1284,7 @@ RUN [ $(ls -l /exists/test_file | awk '{print $3":"$4}') = 'root:root' ]`,
1242 1242
 }
1243 1243
 
1244 1244
 func (s *DockerSuite) TestBuildAddWholeDirToRoot(c *check.C) {
1245
+	testRequires(c, DaemonIsLinux)
1245 1246
 	name := "testaddwholedirtoroot"
1246 1247
 	ctx, err := fakeContext(fmt.Sprintf(`FROM busybox
1247 1248
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -1269,6 +1312,7 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`, expecte
1269 1269
 
1270 1270
 // Testing #5941
1271 1271
 func (s *DockerSuite) TestBuildAddEtcToRoot(c *check.C) {
1272
+	testRequires(c, DaemonIsLinux)
1272 1273
 	name := "testaddetctoroot"
1273 1274
 	ctx, err := fakeContext(`FROM scratch
1274 1275
 ADD . /`,
... ...
@@ -1287,6 +1331,7 @@ ADD . /`,
1287 1287
 
1288 1288
 // Testing #9401
1289 1289
 func (s *DockerSuite) TestBuildAddPreservesFilesSpecialBits(c *check.C) {
1290
+	testRequires(c, DaemonIsLinux)
1290 1291
 	name := "testaddpreservesfilesspecialbits"
1291 1292
 	ctx, err := fakeContext(`FROM busybox
1292 1293
 ADD suidbin /usr/bin/suidbin
... ...
@@ -1309,6 +1354,7 @@ RUN [ $(ls -l /usr/bin/suidbin | awk '{print $1}') = '-rwsr-xr-x' ]`,
1309 1309
 }
1310 1310
 
1311 1311
 func (s *DockerSuite) TestBuildCopySingleFileToRoot(c *check.C) {
1312
+	testRequires(c, DaemonIsLinux)
1312 1313
 	name := "testcopysinglefiletoroot"
1313 1314
 	ctx, err := fakeContext(fmt.Sprintf(`FROM busybox
1314 1315
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -1334,6 +1380,7 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`, expecte
1334 1334
 
1335 1335
 // Issue #3960: "ADD src ." hangs - adapted for COPY
1336 1336
 func (s *DockerSuite) TestBuildCopySingleFileToWorkdir(c *check.C) {
1337
+	testRequires(c, DaemonIsLinux)
1337 1338
 	name := "testcopysinglefiletoworkdir"
1338 1339
 	ctx, err := fakeContext(`FROM busybox
1339 1340
 COPY test_file .`,
... ...
@@ -1360,6 +1407,7 @@ COPY test_file .`,
1360 1360
 }
1361 1361
 
1362 1362
 func (s *DockerSuite) TestBuildCopySingleFileToExistDir(c *check.C) {
1363
+	testRequires(c, DaemonIsLinux)
1363 1364
 	name := "testcopysinglefiletoexistdir"
1364 1365
 	ctx, err := fakeContext(`FROM busybox
1365 1366
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -1385,6 +1433,7 @@ RUN [ $(ls -l /exists/exists_file | awk '{print $3":"$4}') = 'dockerio:dockerio'
1385 1385
 }
1386 1386
 
1387 1387
 func (s *DockerSuite) TestBuildCopySingleFileToNonExistDir(c *check.C) {
1388
+	testRequires(c, DaemonIsLinux)
1388 1389
 	name := "testcopysinglefiletononexistdir"
1389 1390
 	ctx, err := fakeContext(`FROM busybox
1390 1391
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -1409,6 +1458,7 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`,
1409 1409
 }
1410 1410
 
1411 1411
 func (s *DockerSuite) TestBuildCopyDirContentToRoot(c *check.C) {
1412
+	testRequires(c, DaemonIsLinux)
1412 1413
 	name := "testcopydircontenttoroot"
1413 1414
 	ctx, err := fakeContext(`FROM busybox
1414 1415
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -1432,6 +1482,7 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`,
1432 1432
 }
1433 1433
 
1434 1434
 func (s *DockerSuite) TestBuildCopyDirContentToExistDir(c *check.C) {
1435
+	testRequires(c, DaemonIsLinux)
1435 1436
 	name := "testcopydircontenttoexistdir"
1436 1437
 	ctx, err := fakeContext(`FROM busybox
1437 1438
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -1457,6 +1508,7 @@ RUN [ $(ls -l /exists/test_file | awk '{print $3":"$4}') = 'root:root' ]`,
1457 1457
 }
1458 1458
 
1459 1459
 func (s *DockerSuite) TestBuildCopyWholeDirToRoot(c *check.C) {
1460
+	testRequires(c, DaemonIsLinux)
1460 1461
 	name := "testcopywholedirtoroot"
1461 1462
 	ctx, err := fakeContext(fmt.Sprintf(`FROM busybox
1462 1463
 RUN echo 'dockerio:x:1001:1001::/bin:/bin/false' >> /etc/passwd
... ...
@@ -1483,6 +1535,7 @@ RUN [ $(ls -l /exists | awk '{print $3":"$4}') = 'dockerio:dockerio' ]`, expecte
1483 1483
 }
1484 1484
 
1485 1485
 func (s *DockerSuite) TestBuildCopyEtcToRoot(c *check.C) {
1486
+	testRequires(c, DaemonIsLinux)
1486 1487
 	name := "testcopyetctoroot"
1487 1488
 	ctx, err := fakeContext(`FROM scratch
1488 1489
 COPY . /`,
... ...
@@ -1500,6 +1553,7 @@ COPY . /`,
1500 1500
 }
1501 1501
 
1502 1502
 func (s *DockerSuite) TestBuildCopyDisallowRemote(c *check.C) {
1503
+	testRequires(c, DaemonIsLinux)
1503 1504
 	name := "testcopydisallowremote"
1504 1505
 	_, out, err := buildImageWithOut(name, `FROM scratch
1505 1506
 COPY https://index.docker.io/robots.txt /`,
... ...
@@ -1510,6 +1564,7 @@ COPY https://index.docker.io/robots.txt /`,
1510 1510
 }
1511 1511
 
1512 1512
 func (s *DockerSuite) TestBuildAddBadLinks(c *check.C) {
1513
+	testRequires(c, DaemonIsLinux)
1513 1514
 	const (
1514 1515
 		dockerfile = `
1515 1516
 			FROM scratch
... ...
@@ -1596,6 +1651,7 @@ func (s *DockerSuite) TestBuildAddBadLinks(c *check.C) {
1596 1596
 }
1597 1597
 
1598 1598
 func (s *DockerSuite) TestBuildAddBadLinksVolume(c *check.C) {
1599
+	testRequires(c, DaemonIsLinux)
1599 1600
 	const (
1600 1601
 		dockerfileTemplate = `
1601 1602
 		FROM busybox
... ...
@@ -1648,6 +1704,7 @@ func (s *DockerSuite) TestBuildAddBadLinksVolume(c *check.C) {
1648 1648
 // Issue #5270 - ensure we throw a better error than "unexpected EOF"
1649 1649
 // when we can't access files in the context.
1650 1650
 func (s *DockerSuite) TestBuildWithInaccessibleFilesInContext(c *check.C) {
1651
+	testRequires(c, DaemonIsLinux)
1651 1652
 	testRequires(c, UnixCli) // test uses chown/chmod: not available on windows
1652 1653
 
1653 1654
 	{
... ...
@@ -1773,6 +1830,7 @@ func (s *DockerSuite) TestBuildWithInaccessibleFilesInContext(c *check.C) {
1773 1773
 }
1774 1774
 
1775 1775
 func (s *DockerSuite) TestBuildForceRm(c *check.C) {
1776
+	testRequires(c, DaemonIsLinux)
1776 1777
 	containerCountBefore, err := getContainerCount()
1777 1778
 	if err != nil {
1778 1779
 		c.Fatalf("failed to get the container count: %s", err)
... ...
@@ -1805,6 +1863,7 @@ func (s *DockerSuite) TestBuildForceRm(c *check.C) {
1805 1805
 // * When docker events sees container start, close the "docker build" command
1806 1806
 // * Wait for docker events to emit a dying event.
1807 1807
 func (s *DockerSuite) TestBuildCancellationKillsSleep(c *check.C) {
1808
+	testRequires(c, DaemonIsLinux)
1808 1809
 	name := "testbuildcancellation"
1809 1810
 
1810 1811
 	// (Note: one year, will never finish)
... ...
@@ -1906,6 +1965,7 @@ func (s *DockerSuite) TestBuildCancellationKillsSleep(c *check.C) {
1906 1906
 }
1907 1907
 
1908 1908
 func (s *DockerSuite) TestBuildRm(c *check.C) {
1909
+	testRequires(c, DaemonIsLinux)
1909 1910
 	name := "testbuildrm"
1910 1911
 	ctx, err := fakeContext("FROM scratch\nADD foo /\nADD foo /", map[string]string{"foo": "bar"})
1911 1912
 	if err != nil {
... ...
@@ -1985,6 +2045,7 @@ func (s *DockerSuite) TestBuildRm(c *check.C) {
1985 1985
 }
1986 1986
 
1987 1987
 func (s *DockerSuite) TestBuildWithVolumes(c *check.C) {
1988
+	testRequires(c, DaemonIsLinux)
1988 1989
 	var (
1989 1990
 		result   map[string]map[string]struct{}
1990 1991
 		name     = "testbuildvolumes"
... ...
@@ -2031,6 +2092,7 @@ func (s *DockerSuite) TestBuildWithVolumes(c *check.C) {
2031 2031
 }
2032 2032
 
2033 2033
 func (s *DockerSuite) TestBuildMaintainer(c *check.C) {
2034
+	testRequires(c, DaemonIsLinux)
2034 2035
 	name := "testbuildmaintainer"
2035 2036
 	expected := "dockerio"
2036 2037
 	_, err := buildImage(name,
... ...
@@ -2050,6 +2112,7 @@ func (s *DockerSuite) TestBuildMaintainer(c *check.C) {
2050 2050
 }
2051 2051
 
2052 2052
 func (s *DockerSuite) TestBuildUser(c *check.C) {
2053
+	testRequires(c, DaemonIsLinux)
2053 2054
 	name := "testbuilduser"
2054 2055
 	expected := "dockerio"
2055 2056
 	_, err := buildImage(name,
... ...
@@ -2071,6 +2134,7 @@ func (s *DockerSuite) TestBuildUser(c *check.C) {
2071 2071
 }
2072 2072
 
2073 2073
 func (s *DockerSuite) TestBuildRelativeWorkdir(c *check.C) {
2074
+	testRequires(c, DaemonIsLinux)
2074 2075
 	name := "testbuildrelativeworkdir"
2075 2076
 	expected := "/test2/test3"
2076 2077
 	_, err := buildImage(name,
... ...
@@ -2096,6 +2160,7 @@ func (s *DockerSuite) TestBuildRelativeWorkdir(c *check.C) {
2096 2096
 }
2097 2097
 
2098 2098
 func (s *DockerSuite) TestBuildWorkdirWithEnvVariables(c *check.C) {
2099
+	testRequires(c, DaemonIsLinux)
2099 2100
 	name := "testbuildworkdirwithenvvariables"
2100 2101
 	expected := "/test1/test2"
2101 2102
 	_, err := buildImage(name,
... ...
@@ -2118,6 +2183,7 @@ func (s *DockerSuite) TestBuildWorkdirWithEnvVariables(c *check.C) {
2118 2118
 }
2119 2119
 
2120 2120
 func (s *DockerSuite) TestBuildRelativeCopy(c *check.C) {
2121
+	testRequires(c, DaemonIsLinux)
2121 2122
 	name := "testbuildrelativecopy"
2122 2123
 	dockerfile := `
2123 2124
 		FROM busybox
... ...
@@ -2156,6 +2222,7 @@ func (s *DockerSuite) TestBuildRelativeCopy(c *check.C) {
2156 2156
 }
2157 2157
 
2158 2158
 func (s *DockerSuite) TestBuildEnv(c *check.C) {
2159
+	testRequires(c, DaemonIsLinux)
2159 2160
 	name := "testbuildenv"
2160 2161
 	expected := "[PATH=/test:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PORT=2375]"
2161 2162
 	_, err := buildImage(name,
... ...
@@ -2177,6 +2244,7 @@ func (s *DockerSuite) TestBuildEnv(c *check.C) {
2177 2177
 }
2178 2178
 
2179 2179
 func (s *DockerSuite) TestBuildContextCleanup(c *check.C) {
2180
+	testRequires(c, DaemonIsLinux)
2180 2181
 	testRequires(c, SameHostDaemon)
2181 2182
 
2182 2183
 	name := "testbuildcontextcleanup"
... ...
@@ -2202,6 +2270,7 @@ func (s *DockerSuite) TestBuildContextCleanup(c *check.C) {
2202 2202
 }
2203 2203
 
2204 2204
 func (s *DockerSuite) TestBuildContextCleanupFailedBuild(c *check.C) {
2205
+	testRequires(c, DaemonIsLinux)
2205 2206
 	testRequires(c, SameHostDaemon)
2206 2207
 
2207 2208
 	name := "testbuildcontextcleanup"
... ...
@@ -2227,6 +2296,7 @@ func (s *DockerSuite) TestBuildContextCleanupFailedBuild(c *check.C) {
2227 2227
 }
2228 2228
 
2229 2229
 func (s *DockerSuite) TestBuildCmd(c *check.C) {
2230
+	testRequires(c, DaemonIsLinux)
2230 2231
 	name := "testbuildcmd"
2231 2232
 	expected := "{[/bin/echo Hello World]}"
2232 2233
 	_, err := buildImage(name,
... ...
@@ -2246,6 +2316,7 @@ func (s *DockerSuite) TestBuildCmd(c *check.C) {
2246 2246
 }
2247 2247
 
2248 2248
 func (s *DockerSuite) TestBuildExpose(c *check.C) {
2249
+	testRequires(c, DaemonIsLinux)
2249 2250
 	name := "testbuildexpose"
2250 2251
 	expected := "map[2375/tcp:{}]"
2251 2252
 	_, err := buildImage(name,
... ...
@@ -2265,6 +2336,7 @@ func (s *DockerSuite) TestBuildExpose(c *check.C) {
2265 2265
 }
2266 2266
 
2267 2267
 func (s *DockerSuite) TestBuildExposeMorePorts(c *check.C) {
2268
+	testRequires(c, DaemonIsLinux)
2268 2269
 	// start building docker file with a large number of ports
2269 2270
 	portList := make([]string, 50)
2270 2271
 	line := make([]string, 100)
... ...
@@ -2319,6 +2391,7 @@ func (s *DockerSuite) TestBuildExposeMorePorts(c *check.C) {
2319 2319
 }
2320 2320
 
2321 2321
 func (s *DockerSuite) TestBuildExposeOrder(c *check.C) {
2322
+	testRequires(c, DaemonIsLinux)
2322 2323
 	buildID := func(name, exposed string) string {
2323 2324
 		_, err := buildImage(name, fmt.Sprintf(`FROM scratch
2324 2325
 		EXPOSE %s`, exposed), true)
... ...
@@ -2340,6 +2413,7 @@ func (s *DockerSuite) TestBuildExposeOrder(c *check.C) {
2340 2340
 }
2341 2341
 
2342 2342
 func (s *DockerSuite) TestBuildExposeUpperCaseProto(c *check.C) {
2343
+	testRequires(c, DaemonIsLinux)
2343 2344
 	name := "testbuildexposeuppercaseproto"
2344 2345
 	expected := "map[5678/udp:{}]"
2345 2346
 	_, err := buildImage(name,
... ...
@@ -2359,6 +2433,7 @@ func (s *DockerSuite) TestBuildExposeUpperCaseProto(c *check.C) {
2359 2359
 }
2360 2360
 
2361 2361
 func (s *DockerSuite) TestBuildEmptyEntrypointInheritance(c *check.C) {
2362
+	testRequires(c, DaemonIsLinux)
2362 2363
 	name := "testbuildentrypointinheritance"
2363 2364
 	name2 := "testbuildentrypointinheritance2"
2364 2365
 
... ...
@@ -2400,6 +2475,7 @@ func (s *DockerSuite) TestBuildEmptyEntrypointInheritance(c *check.C) {
2400 2400
 }
2401 2401
 
2402 2402
 func (s *DockerSuite) TestBuildEmptyEntrypoint(c *check.C) {
2403
+	testRequires(c, DaemonIsLinux)
2403 2404
 	name := "testbuildentrypoint"
2404 2405
 	expected := "{[]}"
2405 2406
 
... ...
@@ -2421,6 +2497,7 @@ func (s *DockerSuite) TestBuildEmptyEntrypoint(c *check.C) {
2421 2421
 }
2422 2422
 
2423 2423
 func (s *DockerSuite) TestBuildEntrypoint(c *check.C) {
2424
+	testRequires(c, DaemonIsLinux)
2424 2425
 	name := "testbuildentrypoint"
2425 2426
 	expected := "{[/bin/echo]}"
2426 2427
 	_, err := buildImage(name,
... ...
@@ -2442,6 +2519,7 @@ func (s *DockerSuite) TestBuildEntrypoint(c *check.C) {
2442 2442
 
2443 2443
 // #6445 ensure ONBUILD triggers aren't committed to grandchildren
2444 2444
 func (s *DockerSuite) TestBuildOnBuildLimitedInheritence(c *check.C) {
2445
+	testRequires(c, DaemonIsLinux)
2445 2446
 	var (
2446 2447
 		out2, out3 string
2447 2448
 	)
... ...
@@ -2510,6 +2588,7 @@ func (s *DockerSuite) TestBuildOnBuildLimitedInheritence(c *check.C) {
2510 2510
 }
2511 2511
 
2512 2512
 func (s *DockerSuite) TestBuildWithCache(c *check.C) {
2513
+	testRequires(c, DaemonIsLinux)
2513 2514
 	name := "testbuildwithcache"
2514 2515
 	id1, err := buildImage(name,
2515 2516
 		`FROM scratch
... ...
@@ -2535,6 +2614,7 @@ func (s *DockerSuite) TestBuildWithCache(c *check.C) {
2535 2535
 }
2536 2536
 
2537 2537
 func (s *DockerSuite) TestBuildWithoutCache(c *check.C) {
2538
+	testRequires(c, DaemonIsLinux)
2538 2539
 	name := "testbuildwithoutcache"
2539 2540
 	name2 := "testbuildwithoutcache2"
2540 2541
 	id1, err := buildImage(name,
... ...
@@ -2562,6 +2642,7 @@ func (s *DockerSuite) TestBuildWithoutCache(c *check.C) {
2562 2562
 }
2563 2563
 
2564 2564
 func (s *DockerSuite) TestBuildConditionalCache(c *check.C) {
2565
+	testRequires(c, DaemonIsLinux)
2565 2566
 	name := "testbuildconditionalcache"
2566 2567
 
2567 2568
 	dockerfile := `
... ...
@@ -2602,6 +2683,7 @@ func (s *DockerSuite) TestBuildConditionalCache(c *check.C) {
2602 2602
 }
2603 2603
 
2604 2604
 func (s *DockerSuite) TestBuildAddLocalFileWithCache(c *check.C) {
2605
+	testRequires(c, DaemonIsLinux)
2605 2606
 	name := "testbuildaddlocalfilewithcache"
2606 2607
 	name2 := "testbuildaddlocalfilewithcache2"
2607 2608
 	dockerfile := `
... ...
@@ -2630,6 +2712,7 @@ func (s *DockerSuite) TestBuildAddLocalFileWithCache(c *check.C) {
2630 2630
 }
2631 2631
 
2632 2632
 func (s *DockerSuite) TestBuildAddMultipleLocalFileWithCache(c *check.C) {
2633
+	testRequires(c, DaemonIsLinux)
2633 2634
 	name := "testbuildaddmultiplelocalfilewithcache"
2634 2635
 	name2 := "testbuildaddmultiplelocalfilewithcache2"
2635 2636
 	dockerfile := `
... ...
@@ -2658,6 +2741,7 @@ func (s *DockerSuite) TestBuildAddMultipleLocalFileWithCache(c *check.C) {
2658 2658
 }
2659 2659
 
2660 2660
 func (s *DockerSuite) TestBuildAddLocalFileWithoutCache(c *check.C) {
2661
+	testRequires(c, DaemonIsLinux)
2661 2662
 	name := "testbuildaddlocalfilewithoutcache"
2662 2663
 	name2 := "testbuildaddlocalfilewithoutcache2"
2663 2664
 	dockerfile := `
... ...
@@ -2686,6 +2770,7 @@ func (s *DockerSuite) TestBuildAddLocalFileWithoutCache(c *check.C) {
2686 2686
 }
2687 2687
 
2688 2688
 func (s *DockerSuite) TestBuildCopyDirButNotFile(c *check.C) {
2689
+	testRequires(c, DaemonIsLinux)
2689 2690
 	name := "testbuildcopydirbutnotfile"
2690 2691
 	name2 := "testbuildcopydirbutnotfile2"
2691 2692
 	dockerfile := `
... ...
@@ -2716,6 +2801,7 @@ func (s *DockerSuite) TestBuildCopyDirButNotFile(c *check.C) {
2716 2716
 }
2717 2717
 
2718 2718
 func (s *DockerSuite) TestBuildAddCurrentDirWithCache(c *check.C) {
2719
+	testRequires(c, DaemonIsLinux)
2719 2720
 	name := "testbuildaddcurrentdirwithcache"
2720 2721
 	name2 := name + "2"
2721 2722
 	name3 := name + "3"
... ...
@@ -2773,6 +2859,7 @@ func (s *DockerSuite) TestBuildAddCurrentDirWithCache(c *check.C) {
2773 2773
 }
2774 2774
 
2775 2775
 func (s *DockerSuite) TestBuildAddCurrentDirWithoutCache(c *check.C) {
2776
+	testRequires(c, DaemonIsLinux)
2776 2777
 	name := "testbuildaddcurrentdirwithoutcache"
2777 2778
 	name2 := "testbuildaddcurrentdirwithoutcache2"
2778 2779
 	dockerfile := `
... ...
@@ -2800,6 +2887,7 @@ func (s *DockerSuite) TestBuildAddCurrentDirWithoutCache(c *check.C) {
2800 2800
 }
2801 2801
 
2802 2802
 func (s *DockerSuite) TestBuildAddRemoteFileWithCache(c *check.C) {
2803
+	testRequires(c, DaemonIsLinux)
2803 2804
 	name := "testbuildaddremotefilewithcache"
2804 2805
 	server, err := fakeStorage(map[string]string{
2805 2806
 		"baz": "hello",
... ...
@@ -2831,6 +2919,7 @@ func (s *DockerSuite) TestBuildAddRemoteFileWithCache(c *check.C) {
2831 2831
 }
2832 2832
 
2833 2833
 func (s *DockerSuite) TestBuildAddRemoteFileWithoutCache(c *check.C) {
2834
+	testRequires(c, DaemonIsLinux)
2834 2835
 	name := "testbuildaddremotefilewithoutcache"
2835 2836
 	name2 := "testbuildaddremotefilewithoutcache2"
2836 2837
 	server, err := fakeStorage(map[string]string{
... ...
@@ -2863,6 +2952,7 @@ func (s *DockerSuite) TestBuildAddRemoteFileWithoutCache(c *check.C) {
2863 2863
 }
2864 2864
 
2865 2865
 func (s *DockerSuite) TestBuildAddRemoteFileMTime(c *check.C) {
2866
+	testRequires(c, DaemonIsLinux)
2866 2867
 	name := "testbuildaddremotefilemtime"
2867 2868
 	name2 := name + "2"
2868 2869
 	name3 := name + "3"
... ...
@@ -2924,6 +3014,7 @@ func (s *DockerSuite) TestBuildAddRemoteFileMTime(c *check.C) {
2924 2924
 }
2925 2925
 
2926 2926
 func (s *DockerSuite) TestBuildAddLocalAndRemoteFilesWithCache(c *check.C) {
2927
+	testRequires(c, DaemonIsLinux)
2927 2928
 	name := "testbuildaddlocalandremotefilewithcache"
2928 2929
 	server, err := fakeStorage(map[string]string{
2929 2930
 		"baz": "hello",
... ...
@@ -2958,6 +3049,7 @@ func (s *DockerSuite) TestBuildAddLocalAndRemoteFilesWithCache(c *check.C) {
2958 2958
 }
2959 2959
 
2960 2960
 func testContextTar(c *check.C, compression archive.Compression) {
2961
+	testRequires(c, DaemonIsLinux)
2961 2962
 	ctx, err := fakeContext(
2962 2963
 		`FROM busybox
2963 2964
 ADD foo /foo
... ...
@@ -2992,6 +3084,7 @@ func (s *DockerSuite) TestBuildContextTarNoCompression(c *check.C) {
2992 2992
 }
2993 2993
 
2994 2994
 func (s *DockerSuite) TestBuildNoContext(c *check.C) {
2995
+	testRequires(c, DaemonIsLinux)
2995 2996
 	buildCmd := exec.Command(dockerBinary, "build", "-t", "nocontext", "-")
2996 2997
 	buildCmd.Stdin = strings.NewReader("FROM busybox\nCMD echo ok\n")
2997 2998
 
... ...
@@ -3006,6 +3099,7 @@ func (s *DockerSuite) TestBuildNoContext(c *check.C) {
3006 3006
 
3007 3007
 // TODO: TestCaching
3008 3008
 func (s *DockerSuite) TestBuildAddLocalAndRemoteFilesWithoutCache(c *check.C) {
3009
+	testRequires(c, DaemonIsLinux)
3009 3010
 	name := "testbuildaddlocalandremotefilewithoutcache"
3010 3011
 	name2 := "testbuildaddlocalandremotefilewithoutcache2"
3011 3012
 	server, err := fakeStorage(map[string]string{
... ...
@@ -3041,6 +3135,7 @@ func (s *DockerSuite) TestBuildAddLocalAndRemoteFilesWithoutCache(c *check.C) {
3041 3041
 }
3042 3042
 
3043 3043
 func (s *DockerSuite) TestBuildWithVolumeOwnership(c *check.C) {
3044
+	testRequires(c, DaemonIsLinux)
3044 3045
 	name := "testbuildimg"
3045 3046
 
3046 3047
 	_, err := buildImage(name,
... ...
@@ -3068,6 +3163,7 @@ func (s *DockerSuite) TestBuildWithVolumeOwnership(c *check.C) {
3068 3068
 // testing #1405 - config.Cmd does not get cleaned up if
3069 3069
 // utilizing cache
3070 3070
 func (s *DockerSuite) TestBuildEntrypointRunCleanup(c *check.C) {
3071
+	testRequires(c, DaemonIsLinux)
3071 3072
 	name := "testbuildcmdcleanup"
3072 3073
 	if _, err := buildImage(name,
3073 3074
 		`FROM busybox
... ...
@@ -3101,6 +3197,7 @@ func (s *DockerSuite) TestBuildEntrypointRunCleanup(c *check.C) {
3101 3101
 }
3102 3102
 
3103 3103
 func (s *DockerSuite) TestBuildForbiddenContextPath(c *check.C) {
3104
+	testRequires(c, DaemonIsLinux)
3104 3105
 	name := "testbuildforbidpath"
3105 3106
 	ctx, err := fakeContext(`FROM scratch
3106 3107
         ADD ../../ test/
... ...
@@ -3122,6 +3219,7 @@ func (s *DockerSuite) TestBuildForbiddenContextPath(c *check.C) {
3122 3122
 }
3123 3123
 
3124 3124
 func (s *DockerSuite) TestBuildAddFileNotFound(c *check.C) {
3125
+	testRequires(c, DaemonIsLinux)
3125 3126
 	name := "testbuildaddnotfound"
3126 3127
 	ctx, err := fakeContext(`FROM scratch
3127 3128
         ADD foo /usr/local/bar`,
... ...
@@ -3140,6 +3238,7 @@ func (s *DockerSuite) TestBuildAddFileNotFound(c *check.C) {
3140 3140
 }
3141 3141
 
3142 3142
 func (s *DockerSuite) TestBuildInheritance(c *check.C) {
3143
+	testRequires(c, DaemonIsLinux)
3143 3144
 	name := "testbuildinheritance"
3144 3145
 
3145 3146
 	_, err := buildImage(name,
... ...
@@ -3179,6 +3278,7 @@ func (s *DockerSuite) TestBuildInheritance(c *check.C) {
3179 3179
 }
3180 3180
 
3181 3181
 func (s *DockerSuite) TestBuildFails(c *check.C) {
3182
+	testRequires(c, DaemonIsLinux)
3182 3183
 	name := "testbuildfails"
3183 3184
 	_, err := buildImage(name,
3184 3185
 		`FROM busybox
... ...
@@ -3206,6 +3306,7 @@ func (s *DockerSuite) TestBuildFailsDockerfileEmpty(c *check.C) {
3206 3206
 }
3207 3207
 
3208 3208
 func (s *DockerSuite) TestBuildOnBuild(c *check.C) {
3209
+	testRequires(c, DaemonIsLinux)
3209 3210
 	name := "testbuildonbuild"
3210 3211
 	_, err := buildImage(name,
3211 3212
 		`FROM busybox
... ...
@@ -3224,6 +3325,7 @@ func (s *DockerSuite) TestBuildOnBuild(c *check.C) {
3224 3224
 }
3225 3225
 
3226 3226
 func (s *DockerSuite) TestBuildOnBuildForbiddenChained(c *check.C) {
3227
+	testRequires(c, DaemonIsLinux)
3227 3228
 	name := "testbuildonbuildforbiddenchained"
3228 3229
 	_, err := buildImage(name,
3229 3230
 		`FROM busybox
... ...
@@ -3239,6 +3341,7 @@ func (s *DockerSuite) TestBuildOnBuildForbiddenChained(c *check.C) {
3239 3239
 }
3240 3240
 
3241 3241
 func (s *DockerSuite) TestBuildOnBuildForbiddenFrom(c *check.C) {
3242
+	testRequires(c, DaemonIsLinux)
3242 3243
 	name := "testbuildonbuildforbiddenfrom"
3243 3244
 	_, err := buildImage(name,
3244 3245
 		`FROM busybox
... ...
@@ -3254,6 +3357,7 @@ func (s *DockerSuite) TestBuildOnBuildForbiddenFrom(c *check.C) {
3254 3254
 }
3255 3255
 
3256 3256
 func (s *DockerSuite) TestBuildOnBuildForbiddenMaintainer(c *check.C) {
3257
+	testRequires(c, DaemonIsLinux)
3257 3258
 	name := "testbuildonbuildforbiddenmaintainer"
3258 3259
 	_, err := buildImage(name,
3259 3260
 		`FROM busybox
... ...
@@ -3270,6 +3374,7 @@ func (s *DockerSuite) TestBuildOnBuildForbiddenMaintainer(c *check.C) {
3270 3270
 
3271 3271
 // gh #2446
3272 3272
 func (s *DockerSuite) TestBuildAddToSymlinkDest(c *check.C) {
3273
+	testRequires(c, DaemonIsLinux)
3273 3274
 	name := "testbuildaddtosymlinkdest"
3274 3275
 	ctx, err := fakeContext(`FROM busybox
3275 3276
         RUN mkdir /foo
... ...
@@ -3290,6 +3395,7 @@ func (s *DockerSuite) TestBuildAddToSymlinkDest(c *check.C) {
3290 3290
 }
3291 3291
 
3292 3292
 func (s *DockerSuite) TestBuildEscapeWhitespace(c *check.C) {
3293
+	testRequires(c, DaemonIsLinux)
3293 3294
 	name := "testbuildescaping"
3294 3295
 
3295 3296
 	_, err := buildImage(name, `
... ...
@@ -3315,6 +3421,7 @@ docker.com>"
3315 3315
 }
3316 3316
 
3317 3317
 func (s *DockerSuite) TestBuildVerifyIntString(c *check.C) {
3318
+	testRequires(c, DaemonIsLinux)
3318 3319
 	// Verify that strings that look like ints are still passed as strings
3319 3320
 	name := "testbuildstringing"
3320 3321
 
... ...
@@ -3336,6 +3443,7 @@ func (s *DockerSuite) TestBuildVerifyIntString(c *check.C) {
3336 3336
 }
3337 3337
 
3338 3338
 func (s *DockerSuite) TestBuildDockerignore(c *check.C) {
3339
+	testRequires(c, DaemonIsLinux)
3339 3340
 	name := "testbuilddockerignore"
3340 3341
 	dockerfile := `
3341 3342
         FROM busybox
... ...
@@ -3374,6 +3482,7 @@ dir`,
3374 3374
 }
3375 3375
 
3376 3376
 func (s *DockerSuite) TestBuildDockerignoreCleanPaths(c *check.C) {
3377
+	testRequires(c, DaemonIsLinux)
3377 3378
 	name := "testbuilddockerignorecleanpaths"
3378 3379
 	dockerfile := `
3379 3380
         FROM busybox
... ...
@@ -3395,6 +3504,7 @@ func (s *DockerSuite) TestBuildDockerignoreCleanPaths(c *check.C) {
3395 3395
 }
3396 3396
 
3397 3397
 func (s *DockerSuite) TestBuildDockerignoreExceptions(c *check.C) {
3398
+	testRequires(c, DaemonIsLinux)
3398 3399
 	name := "testbuilddockerignoreexceptions"
3399 3400
 	dockerfile := `
3400 3401
         FROM busybox
... ...
@@ -3443,6 +3553,7 @@ dir
3443 3443
 }
3444 3444
 
3445 3445
 func (s *DockerSuite) TestBuildDockerignoringDockerfile(c *check.C) {
3446
+	testRequires(c, DaemonIsLinux)
3446 3447
 	name := "testbuilddockerignoredockerfile"
3447 3448
 	dockerfile := `
3448 3449
         FROM busybox
... ...
@@ -3471,6 +3582,7 @@ func (s *DockerSuite) TestBuildDockerignoringDockerfile(c *check.C) {
3471 3471
 }
3472 3472
 
3473 3473
 func (s *DockerSuite) TestBuildDockerignoringRenamedDockerfile(c *check.C) {
3474
+	testRequires(c, DaemonIsLinux)
3474 3475
 	name := "testbuilddockerignoredockerfile"
3475 3476
 	dockerfile := `
3476 3477
         FROM busybox
... ...
@@ -3501,6 +3613,7 @@ func (s *DockerSuite) TestBuildDockerignoringRenamedDockerfile(c *check.C) {
3501 3501
 }
3502 3502
 
3503 3503
 func (s *DockerSuite) TestBuildDockerignoringDockerignore(c *check.C) {
3504
+	testRequires(c, DaemonIsLinux)
3504 3505
 	name := "testbuilddockerignoredockerignore"
3505 3506
 	dockerfile := `
3506 3507
         FROM busybox
... ...
@@ -3521,6 +3634,7 @@ func (s *DockerSuite) TestBuildDockerignoringDockerignore(c *check.C) {
3521 3521
 }
3522 3522
 
3523 3523
 func (s *DockerSuite) TestBuildDockerignoreTouchDockerfile(c *check.C) {
3524
+	testRequires(c, DaemonIsLinux)
3524 3525
 	var id1 string
3525 3526
 	var id2 string
3526 3527
 
... ...
@@ -3573,6 +3687,7 @@ func (s *DockerSuite) TestBuildDockerignoreTouchDockerfile(c *check.C) {
3573 3573
 }
3574 3574
 
3575 3575
 func (s *DockerSuite) TestBuildDockerignoringWholeDir(c *check.C) {
3576
+	testRequires(c, DaemonIsLinux)
3576 3577
 	name := "testbuilddockerignorewholedir"
3577 3578
 	dockerfile := `
3578 3579
         FROM busybox
... ...
@@ -3608,6 +3723,7 @@ func (s *DockerSuite) TestBuildDockerignoringWholeDir(c *check.C) {
3608 3608
 }
3609 3609
 
3610 3610
 func (s *DockerSuite) TestBuildDockerignoringBadExclusion(c *check.C) {
3611
+	testRequires(c, DaemonIsLinux)
3611 3612
 	name := "testbuilddockerignorewholedir"
3612 3613
 	dockerfile := `
3613 3614
         FROM busybox
... ...
@@ -3632,6 +3748,7 @@ func (s *DockerSuite) TestBuildDockerignoringBadExclusion(c *check.C) {
3632 3632
 }
3633 3633
 
3634 3634
 func (s *DockerSuite) TestBuildLineBreak(c *check.C) {
3635
+	testRequires(c, DaemonIsLinux)
3635 3636
 	name := "testbuildlinebreak"
3636 3637
 	_, err := buildImage(name,
3637 3638
 		`FROM  busybox
... ...
@@ -3647,6 +3764,7 @@ RUN    [ "$(ls -d /var/run/sshd)" = "/var/run/sshd" ]`,
3647 3647
 }
3648 3648
 
3649 3649
 func (s *DockerSuite) TestBuildEOLInLine(c *check.C) {
3650
+	testRequires(c, DaemonIsLinux)
3650 3651
 	name := "testbuildeolinline"
3651 3652
 	_, err := buildImage(name,
3652 3653
 		`FROM   busybox
... ...
@@ -3662,6 +3780,7 @@ RUN    [ "$(ls -d /var/run/sshd)" = "/var/run/sshd" ]`,
3662 3662
 }
3663 3663
 
3664 3664
 func (s *DockerSuite) TestBuildCommentsShebangs(c *check.C) {
3665
+	testRequires(c, DaemonIsLinux)
3665 3666
 	name := "testbuildcomments"
3666 3667
 	_, err := buildImage(name,
3667 3668
 		`FROM busybox
... ...
@@ -3680,6 +3799,7 @@ RUN [ "$(/hello.sh)" = "hello world" ]`,
3680 3680
 }
3681 3681
 
3682 3682
 func (s *DockerSuite) TestBuildUsersAndGroups(c *check.C) {
3683
+	testRequires(c, DaemonIsLinux)
3683 3684
 	name := "testbuildusers"
3684 3685
 	_, err := buildImage(name,
3685 3686
 		`FROM busybox
... ...
@@ -3742,6 +3862,7 @@ RUN [ "$(id -u):$(id -g)/$(id -un):$(id -gn)/$(id -G):$(id -Gn)" = '1042:1043/10
3742 3742
 }
3743 3743
 
3744 3744
 func (s *DockerSuite) TestBuildEnvUsage(c *check.C) {
3745
+	testRequires(c, DaemonIsLinux)
3745 3746
 	name := "testbuildenvusage"
3746 3747
 	dockerfile := `FROM busybox
3747 3748
 ENV    HOME /root
... ...
@@ -3777,6 +3898,7 @@ RUN    [ "$ghi" = "def" ]
3777 3777
 }
3778 3778
 
3779 3779
 func (s *DockerSuite) TestBuildEnvUsage2(c *check.C) {
3780
+	testRequires(c, DaemonIsLinux)
3780 3781
 	name := "testbuildenvusage2"
3781 3782
 	dockerfile := `FROM busybox
3782 3783
 ENV    abc=def
... ...
@@ -3879,6 +4001,7 @@ RUN    [ "$eee1,$eee2,$eee3,$eee4" = 'foo,foo,foo,foo' ]
3879 3879
 }
3880 3880
 
3881 3881
 func (s *DockerSuite) TestBuildAddScript(c *check.C) {
3882
+	testRequires(c, DaemonIsLinux)
3882 3883
 	name := "testbuildaddscript"
3883 3884
 	dockerfile := `
3884 3885
 FROM busybox
... ...
@@ -3901,6 +4024,7 @@ RUN [ "$(cat /testfile)" = 'test!' ]`
3901 3901
 }
3902 3902
 
3903 3903
 func (s *DockerSuite) TestBuildAddTar(c *check.C) {
3904
+	testRequires(c, DaemonIsLinux)
3904 3905
 	name := "testbuildaddtar"
3905 3906
 
3906 3907
 	ctx := func() *FakeContext {
... ...
@@ -3955,6 +4079,8 @@ RUN cat /existing-directory-trailing-slash/test/foo | grep Hi`
3955 3955
 }
3956 3956
 
3957 3957
 func (s *DockerSuite) TestBuildAddTarXz(c *check.C) {
3958
+	testRequires(c, DaemonIsLinux)
3959
+	testRequires(c, DaemonIsLinux)
3958 3960
 	name := "testbuildaddtarxz"
3959 3961
 
3960 3962
 	ctx := func() *FakeContext {
... ...
@@ -4006,6 +4132,7 @@ func (s *DockerSuite) TestBuildAddTarXz(c *check.C) {
4006 4006
 }
4007 4007
 
4008 4008
 func (s *DockerSuite) TestBuildAddTarXzGz(c *check.C) {
4009
+	testRequires(c, DaemonIsLinux)
4009 4010
 	name := "testbuildaddtarxzgz"
4010 4011
 
4011 4012
 	ctx := func() *FakeContext {
... ...
@@ -4064,6 +4191,7 @@ func (s *DockerSuite) TestBuildAddTarXzGz(c *check.C) {
4064 4064
 }
4065 4065
 
4066 4066
 func (s *DockerSuite) TestBuildFromGIT(c *check.C) {
4067
+	testRequires(c, DaemonIsLinux)
4067 4068
 	name := "testbuildfromgit"
4068 4069
 	git, err := newFakeGit("repo", map[string]string{
4069 4070
 		"Dockerfile": `FROM busybox
... ...
@@ -4091,6 +4219,7 @@ func (s *DockerSuite) TestBuildFromGIT(c *check.C) {
4091 4091
 }
4092 4092
 
4093 4093
 func (s *DockerSuite) TestBuildFromGITWithContext(c *check.C) {
4094
+	testRequires(c, DaemonIsLinux)
4094 4095
 	name := "testbuildfromgit"
4095 4096
 	git, err := newFakeGit("repo", map[string]string{
4096 4097
 		"docker/Dockerfile": `FROM busybox
... ...
@@ -4119,6 +4248,7 @@ func (s *DockerSuite) TestBuildFromGITWithContext(c *check.C) {
4119 4119
 }
4120 4120
 
4121 4121
 func (s *DockerSuite) TestBuildFromGITwithF(c *check.C) {
4122
+	testRequires(c, DaemonIsLinux)
4122 4123
 	name := "testbuildfromgitwithf"
4123 4124
 	git, err := newFakeGit("repo", map[string]string{
4124 4125
 		"myApp/myDockerfile": `FROM busybox
... ...
@@ -4140,6 +4270,7 @@ func (s *DockerSuite) TestBuildFromGITwithF(c *check.C) {
4140 4140
 }
4141 4141
 
4142 4142
 func (s *DockerSuite) TestBuildFromRemoteTarball(c *check.C) {
4143
+	testRequires(c, DaemonIsLinux)
4143 4144
 	name := "testbuildfromremotetarball"
4144 4145
 
4145 4146
 	buffer := new(bytes.Buffer)
... ...
@@ -4180,6 +4311,7 @@ func (s *DockerSuite) TestBuildFromRemoteTarball(c *check.C) {
4180 4180
 }
4181 4181
 
4182 4182
 func (s *DockerSuite) TestBuildCleanupCmdOnEntrypoint(c *check.C) {
4183
+	testRequires(c, DaemonIsLinux)
4183 4184
 	name := "testbuildcmdcleanuponentrypoint"
4184 4185
 	if _, err := buildImage(name,
4185 4186
 		`FROM scratch
... ...
@@ -4212,6 +4344,7 @@ func (s *DockerSuite) TestBuildCleanupCmdOnEntrypoint(c *check.C) {
4212 4212
 }
4213 4213
 
4214 4214
 func (s *DockerSuite) TestBuildClearCmd(c *check.C) {
4215
+	testRequires(c, DaemonIsLinux)
4215 4216
 	name := "testbuildclearcmd"
4216 4217
 	_, err := buildImage(name,
4217 4218
 		`From scratch
... ...
@@ -4231,6 +4364,7 @@ func (s *DockerSuite) TestBuildClearCmd(c *check.C) {
4231 4231
 }
4232 4232
 
4233 4233
 func (s *DockerSuite) TestBuildEmptyCmd(c *check.C) {
4234
+	testRequires(c, DaemonIsLinux)
4234 4235
 	name := "testbuildemptycmd"
4235 4236
 	if _, err := buildImage(name, "FROM scratch\nMAINTAINER quux\n", true); err != nil {
4236 4237
 		c.Fatal(err)
... ...
@@ -4245,6 +4379,7 @@ func (s *DockerSuite) TestBuildEmptyCmd(c *check.C) {
4245 4245
 }
4246 4246
 
4247 4247
 func (s *DockerSuite) TestBuildOnBuildOutput(c *check.C) {
4248
+	testRequires(c, DaemonIsLinux)
4248 4249
 	name := "testbuildonbuildparent"
4249 4250
 	if _, err := buildImage(name, "FROM busybox\nONBUILD RUN echo foo\n", true); err != nil {
4250 4251
 		c.Fatal(err)
... ...
@@ -4261,6 +4396,7 @@ func (s *DockerSuite) TestBuildOnBuildOutput(c *check.C) {
4261 4261
 }
4262 4262
 
4263 4263
 func (s *DockerSuite) TestBuildInvalidTag(c *check.C) {
4264
+	testRequires(c, DaemonIsLinux)
4264 4265
 	name := "abcd:" + stringutils.GenerateRandomAlphaOnlyString(200)
4265 4266
 	_, out, err := buildImageWithOut(name, "FROM scratch\nMAINTAINER quux\n", true)
4266 4267
 	// if the error doesnt check for illegal tag name, or the image is built
... ...
@@ -4271,6 +4407,7 @@ func (s *DockerSuite) TestBuildInvalidTag(c *check.C) {
4271 4271
 }
4272 4272
 
4273 4273
 func (s *DockerSuite) TestBuildCmdShDashC(c *check.C) {
4274
+	testRequires(c, DaemonIsLinux)
4274 4275
 	name := "testbuildcmdshc"
4275 4276
 	if _, err := buildImage(name, "FROM busybox\nCMD echo cmd\n", true); err != nil {
4276 4277
 		c.Fatal(err)
... ...
@@ -4290,6 +4427,7 @@ func (s *DockerSuite) TestBuildCmdShDashC(c *check.C) {
4290 4290
 }
4291 4291
 
4292 4292
 func (s *DockerSuite) TestBuildCmdSpaces(c *check.C) {
4293
+	testRequires(c, DaemonIsLinux)
4293 4294
 	// Test to make sure that when we strcat arrays we take into account
4294 4295
 	// the arg separator to make sure ["echo","hi"] and ["echo hi"] don't
4295 4296
 	// look the same
... ...
@@ -4326,6 +4464,7 @@ func (s *DockerSuite) TestBuildCmdSpaces(c *check.C) {
4326 4326
 }
4327 4327
 
4328 4328
 func (s *DockerSuite) TestBuildCmdJSONNoShDashC(c *check.C) {
4329
+	testRequires(c, DaemonIsLinux)
4329 4330
 	name := "testbuildcmdjson"
4330 4331
 	if _, err := buildImage(name, "FROM busybox\nCMD [\"echo\", \"cmd\"]", true); err != nil {
4331 4332
 		c.Fatal(err)
... ...
@@ -4345,6 +4484,7 @@ func (s *DockerSuite) TestBuildCmdJSONNoShDashC(c *check.C) {
4345 4345
 }
4346 4346
 
4347 4347
 func (s *DockerSuite) TestBuildErrorInvalidInstruction(c *check.C) {
4348
+	testRequires(c, DaemonIsLinux)
4348 4349
 	name := "testbuildignoreinvalidinstruction"
4349 4350
 
4350 4351
 	out, _, err := buildImageWithOut(name, "FROM busybox\nfoo bar", true)
... ...
@@ -4355,6 +4495,7 @@ func (s *DockerSuite) TestBuildErrorInvalidInstruction(c *check.C) {
4355 4355
 }
4356 4356
 
4357 4357
 func (s *DockerSuite) TestBuildEntrypointInheritance(c *check.C) {
4358
+	testRequires(c, DaemonIsLinux)
4358 4359
 
4359 4360
 	if _, err := buildImage("parent", `
4360 4361
     FROM busybox
... ...
@@ -4381,6 +4522,7 @@ func (s *DockerSuite) TestBuildEntrypointInheritance(c *check.C) {
4381 4381
 }
4382 4382
 
4383 4383
 func (s *DockerSuite) TestBuildEntrypointInheritanceInspect(c *check.C) {
4384
+	testRequires(c, DaemonIsLinux)
4384 4385
 	var (
4385 4386
 		name     = "testbuildepinherit"
4386 4387
 		name2    = "testbuildepinherit2"
... ...
@@ -4415,6 +4557,7 @@ func (s *DockerSuite) TestBuildEntrypointInheritanceInspect(c *check.C) {
4415 4415
 }
4416 4416
 
4417 4417
 func (s *DockerSuite) TestBuildRunShEntrypoint(c *check.C) {
4418
+	testRequires(c, DaemonIsLinux)
4418 4419
 	name := "testbuildentrypoint"
4419 4420
 	_, err := buildImage(name,
4420 4421
 		`FROM busybox
... ...
@@ -4428,6 +4571,7 @@ func (s *DockerSuite) TestBuildRunShEntrypoint(c *check.C) {
4428 4428
 }
4429 4429
 
4430 4430
 func (s *DockerSuite) TestBuildExoticShellInterpolation(c *check.C) {
4431
+	testRequires(c, DaemonIsLinux)
4431 4432
 	name := "testbuildexoticshellinterpolation"
4432 4433
 
4433 4434
 	_, err := buildImage(name, `
... ...
@@ -4456,6 +4600,7 @@ func (s *DockerSuite) TestBuildExoticShellInterpolation(c *check.C) {
4456 4456
 }
4457 4457
 
4458 4458
 func (s *DockerSuite) TestBuildVerifySingleQuoteFails(c *check.C) {
4459
+	testRequires(c, DaemonIsLinux)
4459 4460
 	// This testcase is supposed to generate an error because the
4460 4461
 	// JSON array we're passing in on the CMD uses single quotes instead
4461 4462
 	// of double quotes (per the JSON spec). This means we interpret it
... ...
@@ -4477,6 +4622,7 @@ func (s *DockerSuite) TestBuildVerifySingleQuoteFails(c *check.C) {
4477 4477
 }
4478 4478
 
4479 4479
 func (s *DockerSuite) TestBuildVerboseOut(c *check.C) {
4480
+	testRequires(c, DaemonIsLinux)
4480 4481
 	name := "testbuildverboseout"
4481 4482
 
4482 4483
 	_, out, err := buildImageWithOut(name,
... ...
@@ -4494,6 +4640,7 @@ RUN echo 123`,
4494 4494
 }
4495 4495
 
4496 4496
 func (s *DockerSuite) TestBuildWithTabs(c *check.C) {
4497
+	testRequires(c, DaemonIsLinux)
4497 4498
 	name := "testbuildwithtabs"
4498 4499
 	_, err := buildImage(name,
4499 4500
 		"FROM busybox\nRUN echo\tone\t\ttwo", true)
... ...
@@ -4512,6 +4659,7 @@ func (s *DockerSuite) TestBuildWithTabs(c *check.C) {
4512 4512
 }
4513 4513
 
4514 4514
 func (s *DockerSuite) TestBuildLabels(c *check.C) {
4515
+	testRequires(c, DaemonIsLinux)
4515 4516
 	name := "testbuildlabel"
4516 4517
 	expected := `{"License":"GPL","Vendor":"Acme"}`
4517 4518
 	_, err := buildImage(name,
... ...
@@ -4532,6 +4680,7 @@ func (s *DockerSuite) TestBuildLabels(c *check.C) {
4532 4532
 }
4533 4533
 
4534 4534
 func (s *DockerSuite) TestBuildLabelsCache(c *check.C) {
4535
+	testRequires(c, DaemonIsLinux)
4535 4536
 	name := "testbuildlabelcache"
4536 4537
 
4537 4538
 	id1, err := buildImage(name,
... ...
@@ -4580,6 +4729,7 @@ func (s *DockerSuite) TestBuildLabelsCache(c *check.C) {
4580 4580
 }
4581 4581
 
4582 4582
 func (s *DockerSuite) TestBuildStderr(c *check.C) {
4583
+	testRequires(c, DaemonIsLinux)
4583 4584
 	// This test just makes sure that no non-error output goes
4584 4585
 	// to stderr
4585 4586
 	name := "testbuildstderr"
... ...
@@ -4606,6 +4756,7 @@ func (s *DockerSuite) TestBuildStderr(c *check.C) {
4606 4606
 
4607 4607
 func (s *DockerSuite) TestBuildChownSingleFile(c *check.C) {
4608 4608
 	testRequires(c, UnixCli) // test uses chown: not available on windows
4609
+	testRequires(c, DaemonIsLinux)
4609 4610
 
4610 4611
 	name := "testbuildchownsinglefile"
4611 4612
 
... ...
@@ -4633,6 +4784,7 @@ RUN [ $(ls -l /test | awk '{print $3":"$4}') = 'root:root' ]
4633 4633
 }
4634 4634
 
4635 4635
 func (s *DockerSuite) TestBuildSymlinkBreakout(c *check.C) {
4636
+	testRequires(c, DaemonIsLinux)
4636 4637
 	name := "testbuildsymlinkbreakout"
4637 4638
 	tmpdir, err := ioutil.TempDir("", name)
4638 4639
 	if err != nil {
... ...
@@ -4686,6 +4838,7 @@ func (s *DockerSuite) TestBuildSymlinkBreakout(c *check.C) {
4686 4686
 }
4687 4687
 
4688 4688
 func (s *DockerSuite) TestBuildXZHost(c *check.C) {
4689
+	testRequires(c, DaemonIsLinux)
4689 4690
 	name := "testbuildxzhost"
4690 4691
 
4691 4692
 	ctx, err := fakeContext(`
... ...
@@ -4713,6 +4866,7 @@ RUN [ ! -e /injected ]`,
4713 4713
 }
4714 4714
 
4715 4715
 func (s *DockerSuite) TestBuildVolumesRetainContents(c *check.C) {
4716
+	testRequires(c, DaemonIsLinux)
4716 4717
 	var (
4717 4718
 		name     = "testbuildvolumescontent"
4718 4719
 		expected = "some text"
... ...
@@ -4742,6 +4896,7 @@ CMD cat /foo/file`,
4742 4742
 }
4743 4743
 
4744 4744
 func (s *DockerSuite) TestBuildRenamedDockerfile(c *check.C) {
4745
+	testRequires(c, DaemonIsLinux)
4745 4746
 
4746 4747
 	ctx, err := fakeContext(`FROM busybox
4747 4748
 	RUN echo from Dockerfile`,
... ...
@@ -4847,6 +5002,7 @@ func (s *DockerSuite) TestBuildRenamedDockerfile(c *check.C) {
4847 4847
 
4848 4848
 func (s *DockerSuite) TestBuildFromMixedcaseDockerfile(c *check.C) {
4849 4849
 	testRequires(c, UnixCli) // Dockerfile overwrites dockerfile on windows
4850
+	testRequires(c, DaemonIsLinux)
4850 4851
 
4851 4852
 	ctx, err := fakeContext(`FROM busybox
4852 4853
 	RUN echo from dockerfile`,
... ...
@@ -4871,6 +5027,7 @@ func (s *DockerSuite) TestBuildFromMixedcaseDockerfile(c *check.C) {
4871 4871
 
4872 4872
 func (s *DockerSuite) TestBuildWithTwoDockerfiles(c *check.C) {
4873 4873
 	testRequires(c, UnixCli) // Dockerfile overwrites dockerfile on windows
4874
+	testRequires(c, DaemonIsLinux)
4874 4875
 
4875 4876
 	ctx, err := fakeContext(`FROM busybox
4876 4877
 RUN echo from Dockerfile`,
... ...
@@ -4894,6 +5051,7 @@ RUN echo from Dockerfile`,
4894 4894
 }
4895 4895
 
4896 4896
 func (s *DockerSuite) TestBuildFromURLWithF(c *check.C) {
4897
+	testRequires(c, DaemonIsLinux)
4897 4898
 
4898 4899
 	server, err := fakeStorage(map[string]string{"baz": `FROM busybox
4899 4900
 RUN echo from baz
... ...
@@ -4928,7 +5086,7 @@ RUN echo from Dockerfile`,
4928 4928
 }
4929 4929
 
4930 4930
 func (s *DockerSuite) TestBuildFromStdinWithF(c *check.C) {
4931
-
4931
+	testRequires(c, DaemonIsLinux)
4932 4932
 	ctx, err := fakeContext(`FROM busybox
4933 4933
 RUN echo from Dockerfile`,
4934 4934
 		map[string]string{})
... ...
@@ -4959,6 +5117,7 @@ RUN find /tmp/`)
4959 4959
 }
4960 4960
 
4961 4961
 func (s *DockerSuite) TestBuildFromOfficialNames(c *check.C) {
4962
+	testRequires(c, DaemonIsLinux)
4962 4963
 	name := "testbuildfromofficial"
4963 4964
 	fromNames := []string{
4964 4965
 		"busybox",
... ...
@@ -4980,6 +5139,7 @@ func (s *DockerSuite) TestBuildFromOfficialNames(c *check.C) {
4980 4980
 
4981 4981
 func (s *DockerSuite) TestBuildDockerfileOutsideContext(c *check.C) {
4982 4982
 	testRequires(c, UnixCli) // uses os.Symlink: not implemented in windows at the time of writing (go-1.4.2)
4983
+	testRequires(c, DaemonIsLinux)
4983 4984
 
4984 4985
 	name := "testbuilddockerfileoutsidecontext"
4985 4986
 	tmpdir, err := ioutil.TempDir("", name)
... ...
@@ -5038,6 +5198,7 @@ func (s *DockerSuite) TestBuildDockerfileOutsideContext(c *check.C) {
5038 5038
 }
5039 5039
 
5040 5040
 func (s *DockerSuite) TestBuildSpaces(c *check.C) {
5041
+	testRequires(c, DaemonIsLinux)
5041 5042
 	// Test to make sure that leading/trailing spaces on a command
5042 5043
 	// doesn't change the error msg we get
5043 5044
 	var (
... ...
@@ -5108,6 +5269,7 @@ func (s *DockerSuite) TestBuildSpaces(c *check.C) {
5108 5108
 }
5109 5109
 
5110 5110
 func (s *DockerSuite) TestBuildSpacesWithQuotes(c *check.C) {
5111
+	testRequires(c, DaemonIsLinux)
5111 5112
 	// Test to make sure that spaces in quotes aren't lost
5112 5113
 	name := "testspacesquotes"
5113 5114
 
... ...
@@ -5129,6 +5291,7 @@ RUN echo "  \
5129 5129
 
5130 5130
 // #4393
5131 5131
 func (s *DockerSuite) TestBuildVolumeFileExistsinContainer(c *check.C) {
5132
+	testRequires(c, DaemonIsLinux)
5132 5133
 	buildCmd := exec.Command(dockerBinary, "build", "-t", "docker-test-errcreatevolumewithfile", "-")
5133 5134
 	buildCmd.Stdin = strings.NewReader(`
5134 5135
 	FROM busybox
... ...
@@ -5144,6 +5307,7 @@ func (s *DockerSuite) TestBuildVolumeFileExistsinContainer(c *check.C) {
5144 5144
 }
5145 5145
 
5146 5146
 func (s *DockerSuite) TestBuildMissingArgs(c *check.C) {
5147
+	testRequires(c, DaemonIsLinux)
5147 5148
 	// Test to make sure that all Dockerfile commands (except the ones listed
5148 5149
 	// in skipCmds) will generate an error if no args are provided.
5149 5150
 	// Note: INSERT is deprecated so we exclude it because of that.
... ...
@@ -5185,6 +5349,7 @@ func (s *DockerSuite) TestBuildMissingArgs(c *check.C) {
5185 5185
 }
5186 5186
 
5187 5187
 func (s *DockerSuite) TestBuildEmptyScratch(c *check.C) {
5188
+	testRequires(c, DaemonIsLinux)
5188 5189
 	_, out, err := buildImageWithOut("sc", "FROM scratch", true)
5189 5190
 	if err == nil {
5190 5191
 		c.Fatalf("Build was supposed to fail")
... ...
@@ -5195,6 +5360,8 @@ func (s *DockerSuite) TestBuildEmptyScratch(c *check.C) {
5195 5195
 }
5196 5196
 
5197 5197
 func (s *DockerSuite) TestBuildDotDotFile(c *check.C) {
5198
+	testRequires(c, DaemonIsLinux)
5199
+
5198 5200
 	ctx, err := fakeContext("FROM busybox\n",
5199 5201
 		map[string]string{
5200 5202
 			"..gitme": "",
... ...
@@ -5210,7 +5377,7 @@ func (s *DockerSuite) TestBuildDotDotFile(c *check.C) {
5210 5210
 }
5211 5211
 
5212 5212
 func (s *DockerSuite) TestBuildNotVerbose(c *check.C) {
5213
-
5213
+	testRequires(c, DaemonIsLinux)
5214 5214
 	ctx, err := fakeContext("FROM busybox\nENV abc=hi\nRUN echo $abc there", map[string]string{})
5215 5215
 	if err != nil {
5216 5216
 		c.Fatal(err)
... ...
@@ -5238,6 +5405,7 @@ func (s *DockerSuite) TestBuildNotVerbose(c *check.C) {
5238 5238
 }
5239 5239
 
5240 5240
 func (s *DockerSuite) TestBuildRUNoneJSON(c *check.C) {
5241
+	testRequires(c, DaemonIsLinux)
5241 5242
 	name := "testbuildrunonejson"
5242 5243
 
5243 5244
 	ctx, err := fakeContext(`FROM hello-world:frozen
... ...
@@ -5259,6 +5427,7 @@ RUN [ "/hello" ]`, map[string]string{})
5259 5259
 }
5260 5260
 
5261 5261
 func (s *DockerSuite) TestBuildEmptyStringVolume(c *check.C) {
5262
+	testRequires(c, DaemonIsLinux)
5262 5263
 	name := "testbuildemptystringvolume"
5263 5264
 
5264 5265
 	_, err := buildImage(name, `
... ...
@@ -5275,6 +5444,7 @@ func (s *DockerSuite) TestBuildEmptyStringVolume(c *check.C) {
5275 5275
 func (s *DockerSuite) TestBuildContainerWithCgroupParent(c *check.C) {
5276 5276
 	testRequires(c, NativeExecDriver)
5277 5277
 	testRequires(c, SameHostDaemon)
5278
+	testRequires(c, DaemonIsLinux)
5278 5279
 
5279 5280
 	cgroupParent := "test"
5280 5281
 	data, err := ioutil.ReadFile("/proc/self/cgroup")
... ...
@@ -5304,6 +5474,7 @@ RUN cat /proc/self/cgroup
5304 5304
 }
5305 5305
 
5306 5306
 func (s *DockerSuite) TestBuildNoDupOutput(c *check.C) {
5307
+	testRequires(c, DaemonIsLinux)
5307 5308
 	// Check to make sure our build output prints the Dockerfile cmd
5308 5309
 	// property - there was a bug that caused it to be duplicated on the
5309 5310
 	// Step X  line
... ...
@@ -5324,6 +5495,7 @@ func (s *DockerSuite) TestBuildNoDupOutput(c *check.C) {
5324 5324
 
5325 5325
 // GH15826
5326 5326
 func (s *DockerSuite) TestBuildStartsFromOne(c *check.C) {
5327
+	testRequires(c, DaemonIsLinux)
5327 5328
 	// Explicit check to ensure that build starts from step 1 rather than 0
5328 5329
 	name := "testbuildstartsfromone"
5329 5330
 
... ...
@@ -5340,6 +5512,7 @@ func (s *DockerSuite) TestBuildStartsFromOne(c *check.C) {
5340 5340
 }
5341 5341
 
5342 5342
 func (s *DockerSuite) TestBuildBadCmdFlag(c *check.C) {
5343
+	testRequires(c, DaemonIsLinux)
5343 5344
 	name := "testbuildbadcmdflag"
5344 5345
 
5345 5346
 	_, out, err := buildImageWithOut(name, `
... ...
@@ -5356,6 +5529,7 @@ func (s *DockerSuite) TestBuildBadCmdFlag(c *check.C) {
5356 5356
 }
5357 5357
 
5358 5358
 func (s *DockerSuite) TestBuildRUNErrMsg(c *check.C) {
5359
+	testRequires(c, DaemonIsLinux)
5359 5360
 	// Test to make sure the bad command is quoted with just "s and
5360 5361
 	// not as a Go []string
5361 5362
 	name := "testbuildbadrunerrmsg"
... ...
@@ -5425,6 +5599,7 @@ func (s *DockerTrustSuite) TestTrustedBuildUntrustedTag(c *check.C) {
5425 5425
 }
5426 5426
 
5427 5427
 func (s *DockerTrustSuite) TestBuildContextDirIsSymlink(c *check.C) {
5428
+	testRequires(c, DaemonIsLinux)
5428 5429
 	tempDir, err := ioutil.TempDir("", "test-build-dir-is-symlink-")
5429 5430
 	if err != nil {
5430 5431
 		c.Fatal(err)
... ...
@@ -5464,6 +5639,7 @@ func (s *DockerTrustSuite) TestBuildContextDirIsSymlink(c *check.C) {
5464 5464
 
5465 5465
 // Issue #15634: COPY fails when path starts with "null"
5466 5466
 func (s *DockerSuite) TestBuildNullStringInAddCopyVolume(c *check.C) {
5467
+	testRequires(c, DaemonIsLinux)
5467 5468
 	name := "testbuildnullstringinaddcopyvolume"
5468 5469
 
5469 5470
 	ctx, err := fakeContext(`
... ...
@@ -60,6 +60,7 @@ func setupImageWithTag(c *check.C, tag string) (digest.Digest, error) {
60 60
 }
61 61
 
62 62
 func (s *DockerRegistrySuite) TestPullByTagDisplaysDigest(c *check.C) {
63
+	testRequires(c, DaemonIsLinux)
63 64
 	pushDigest, err := setupImage(c)
64 65
 	if err != nil {
65 66
 		c.Fatalf("error setting up image: %v", err)
... ...
@@ -82,6 +83,7 @@ func (s *DockerRegistrySuite) TestPullByTagDisplaysDigest(c *check.C) {
82 82
 }
83 83
 
84 84
 func (s *DockerRegistrySuite) TestPullByDigest(c *check.C) {
85
+	testRequires(c, DaemonIsLinux)
85 86
 	pushDigest, err := setupImage(c)
86 87
 	if err != nil {
87 88
 		c.Fatalf("error setting up image: %v", err)
... ...
@@ -105,6 +107,7 @@ func (s *DockerRegistrySuite) TestPullByDigest(c *check.C) {
105 105
 }
106 106
 
107 107
 func (s *DockerRegistrySuite) TestPullByDigestNoFallback(c *check.C) {
108
+	testRequires(c, DaemonIsLinux)
108 109
 	// pull from the registry using the <name>@<digest> reference
109 110
 	imageReference := fmt.Sprintf("%s@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", repoName)
110 111
 	out, _, err := dockerCmdWithError("pull", imageReference)
... ...
@@ -446,6 +449,7 @@ func (s *DockerRegistrySuite) TestDeleteImageByIDOnlyPulledByDigest(c *check.C)
446 446
 // TestPullFailsWithAlteredManifest tests that a `docker pull` fails when
447 447
 // we have modified a manifest blob and its digest cannot be verified.
448 448
 func (s *DockerRegistrySuite) TestPullFailsWithAlteredManifest(c *check.C) {
449
+	testRequires(c, DaemonIsLinux)
449 450
 	manifestDigest, err := setupImage(c)
450 451
 	if err != nil {
451 452
 		c.Fatalf("error setting up image: %v", err)
... ...
@@ -495,6 +499,7 @@ func (s *DockerRegistrySuite) TestPullFailsWithAlteredManifest(c *check.C) {
495 495
 // TestPullFailsWithAlteredLayer tests that a `docker pull` fails when
496 496
 // we have modified a layer blob and its digest cannot be verified.
497 497
 func (s *DockerRegistrySuite) TestPullFailsWithAlteredLayer(c *check.C) {
498
+	testRequires(c, DaemonIsLinux)
498 499
 	manifestDigest, err := setupImage(c)
499 500
 	if err != nil {
500 501
 		c.Fatalf("error setting up image: %v", err)
... ...
@@ -7,6 +7,7 @@ import (
7 7
 )
8 8
 
9 9
 func (s *DockerSuite) TestCommitAfterContainerIsDone(c *check.C) {
10
+	testRequires(c, DaemonIsLinux)
10 11
 	out, _ := dockerCmd(c, "run", "-i", "-a", "stdin", "busybox", "echo", "foo")
11 12
 
12 13
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -21,6 +22,7 @@ func (s *DockerSuite) TestCommitAfterContainerIsDone(c *check.C) {
21 21
 }
22 22
 
23 23
 func (s *DockerSuite) TestCommitWithoutPause(c *check.C) {
24
+	testRequires(c, DaemonIsLinux)
24 25
 	out, _ := dockerCmd(c, "run", "-i", "-a", "stdin", "busybox", "echo", "foo")
25 26
 
26 27
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -36,6 +38,7 @@ func (s *DockerSuite) TestCommitWithoutPause(c *check.C) {
36 36
 
37 37
 //test commit a paused container should not unpause it after commit
38 38
 func (s *DockerSuite) TestCommitPausedContainer(c *check.C) {
39
+	testRequires(c, DaemonIsLinux)
39 40
 	defer unpauseAllContainers()
40 41
 	out, _ := dockerCmd(c, "run", "-i", "-d", "busybox")
41 42
 
... ...
@@ -53,7 +56,7 @@ func (s *DockerSuite) TestCommitPausedContainer(c *check.C) {
53 53
 }
54 54
 
55 55
 func (s *DockerSuite) TestCommitNewFile(c *check.C) {
56
-
56
+	testRequires(c, DaemonIsLinux)
57 57
 	dockerCmd(c, "run", "--name", "commiter", "busybox", "/bin/sh", "-c", "echo koye > /foo")
58 58
 
59 59
 	imageID, _ := dockerCmd(c, "commit", "commiter")
... ...
@@ -68,7 +71,7 @@ func (s *DockerSuite) TestCommitNewFile(c *check.C) {
68 68
 }
69 69
 
70 70
 func (s *DockerSuite) TestCommitHardlink(c *check.C) {
71
-
71
+	testRequires(c, DaemonIsLinux)
72 72
 	firstOutput, _ := dockerCmd(c, "run", "-t", "--name", "hardlinks", "busybox", "sh", "-c", "touch file1 && ln file1 file2 && ls -di file1 file2")
73 73
 
74 74
 	chunks := strings.Split(strings.TrimSpace(firstOutput), " ")
... ...
@@ -105,7 +108,7 @@ func (s *DockerSuite) TestCommitHardlink(c *check.C) {
105 105
 }
106 106
 
107 107
 func (s *DockerSuite) TestCommitTTY(c *check.C) {
108
-
108
+	testRequires(c, DaemonIsLinux)
109 109
 	dockerCmd(c, "run", "-t", "--name", "tty", "busybox", "/bin/ls")
110 110
 
111 111
 	imageID, _ := dockerCmd(c, "commit", "tty", "ttytest")
... ...
@@ -116,7 +119,7 @@ func (s *DockerSuite) TestCommitTTY(c *check.C) {
116 116
 }
117 117
 
118 118
 func (s *DockerSuite) TestCommitWithHostBindMount(c *check.C) {
119
-
119
+	testRequires(c, DaemonIsLinux)
120 120
 	dockerCmd(c, "run", "--name", "bind-commit", "-v", "/dev/null:/winning", "busybox", "true")
121 121
 
122 122
 	imageID, _ := dockerCmd(c, "commit", "bind-commit", "bindtest")
... ...
@@ -127,7 +130,7 @@ func (s *DockerSuite) TestCommitWithHostBindMount(c *check.C) {
127 127
 }
128 128
 
129 129
 func (s *DockerSuite) TestCommitChange(c *check.C) {
130
-
130
+	testRequires(c, DaemonIsLinux)
131 131
 	dockerCmd(c, "run", "--name", "test", "busybox", "true")
132 132
 
133 133
 	imageID, _ := dockerCmd(c, "commit",
... ...
@@ -169,6 +172,7 @@ func (s *DockerSuite) TestCommitChange(c *check.C) {
169 169
 
170 170
 // TODO: commit --run is deprecated, remove this once --run is removed
171 171
 func (s *DockerSuite) TestCommitMergeConfigRun(c *check.C) {
172
+	testRequires(c, DaemonIsLinux)
172 173
 	name := "commit-test"
173 174
 	out, _ := dockerCmd(c, "run", "-d", "-e=FOO=bar", "busybox", "/bin/sh", "-c", "echo testing > /tmp/foo")
174 175
 	id := strings.TrimSpace(out)
... ...
@@ -23,6 +23,7 @@ import (
23 23
 
24 24
 // Test for error when SRC does not exist.
25 25
 func (s *DockerSuite) TestCpFromErrSrcNotExists(c *check.C) {
26
+	testRequires(c, DaemonIsLinux)
26 27
 	cID := makeTestContainer(c, testContainerOptions{})
27 28
 	defer deleteContainer(cID)
28 29
 
... ...
@@ -42,6 +43,7 @@ func (s *DockerSuite) TestCpFromErrSrcNotExists(c *check.C) {
42 42
 // Test for error when SRC ends in a trailing
43 43
 // path separator but it exists as a file.
44 44
 func (s *DockerSuite) TestCpFromErrSrcNotDir(c *check.C) {
45
+	testRequires(c, DaemonIsLinux)
45 46
 	cID := makeTestContainer(c, testContainerOptions{addContent: true})
46 47
 	defer deleteContainer(cID)
47 48
 
... ...
@@ -61,6 +63,7 @@ func (s *DockerSuite) TestCpFromErrSrcNotDir(c *check.C) {
61 61
 // Test for error when SRC is a valid file or directory,
62 62
 // bu the DST parent directory does not exist.
63 63
 func (s *DockerSuite) TestCpFromErrDstParentNotExists(c *check.C) {
64
+	testRequires(c, DaemonIsLinux)
64 65
 	cID := makeTestContainer(c, testContainerOptions{addContent: true})
65 66
 	defer deleteContainer(cID)
66 67
 
... ...
@@ -97,6 +100,7 @@ func (s *DockerSuite) TestCpFromErrDstParentNotExists(c *check.C) {
97 97
 // Test for error when DST ends in a trailing
98 98
 // path separator but exists as a file.
99 99
 func (s *DockerSuite) TestCpFromErrDstNotDir(c *check.C) {
100
+	testRequires(c, DaemonIsLinux)
100 101
 	cID := makeTestContainer(c, testContainerOptions{addContent: true})
101 102
 	defer deleteContainer(cID)
102 103
 
... ...
@@ -133,6 +137,7 @@ func (s *DockerSuite) TestCpFromErrDstNotDir(c *check.C) {
133 133
 // Check that copying from a container to a local symlink copies to the symlink
134 134
 // target and does not overwrite the local symlink itself.
135 135
 func (s *DockerSuite) TestCpFromSymlinkDestination(c *check.C) {
136
+	testRequires(c, DaemonIsLinux)
136 137
 	cID := makeTestContainer(c, testContainerOptions{addContent: true})
137 138
 	defer deleteContainer(cID)
138 139
 
... ...
@@ -258,6 +263,7 @@ func (s *DockerSuite) TestCpFromSymlinkDestination(c *check.C) {
258 258
 //    exist. This should create a file with the name DST and copy the
259 259
 //    contents of the source file into it.
260 260
 func (s *DockerSuite) TestCpFromCaseA(c *check.C) {
261
+	testRequires(c, DaemonIsLinux)
261 262
 	cID := makeTestContainer(c, testContainerOptions{
262 263
 		addContent: true, workDir: "/root",
263 264
 	})
... ...
@@ -282,6 +288,7 @@ func (s *DockerSuite) TestCpFromCaseA(c *check.C) {
282 282
 //    exist. This should cause an error because the copy operation cannot
283 283
 //    create a directory when copying a single file.
284 284
 func (s *DockerSuite) TestCpFromCaseB(c *check.C) {
285
+	testRequires(c, DaemonIsLinux)
285 286
 	cID := makeTestContainer(c, testContainerOptions{addContent: true})
286 287
 	defer deleteContainer(cID)
287 288
 
... ...
@@ -304,6 +311,7 @@ func (s *DockerSuite) TestCpFromCaseB(c *check.C) {
304 304
 // C. SRC specifies a file and DST exists as a file. This should overwrite
305 305
 //    the file at DST with the contents of the source file.
306 306
 func (s *DockerSuite) TestCpFromCaseC(c *check.C) {
307
+	testRequires(c, DaemonIsLinux)
307 308
 	cID := makeTestContainer(c, testContainerOptions{
308 309
 		addContent: true, workDir: "/root",
309 310
 	})
... ...
@@ -335,6 +343,7 @@ func (s *DockerSuite) TestCpFromCaseC(c *check.C) {
335 335
 //    a copy of the source file inside it using the basename from SRC. Ensure
336 336
 //    this works whether DST has a trailing path separator or not.
337 337
 func (s *DockerSuite) TestCpFromCaseD(c *check.C) {
338
+	testRequires(c, DaemonIsLinux)
338 339
 	cID := makeTestContainer(c, testContainerOptions{addContent: true})
339 340
 	defer deleteContainer(cID)
340 341
 
... ...
@@ -386,6 +395,7 @@ func (s *DockerSuite) TestCpFromCaseD(c *check.C) {
386 386
 //    directory. Ensure this works whether DST has a trailing path separator or
387 387
 //    not.
388 388
 func (s *DockerSuite) TestCpFromCaseE(c *check.C) {
389
+	testRequires(c, DaemonIsLinux)
389 390
 	cID := makeTestContainer(c, testContainerOptions{addContent: true})
390 391
 	defer deleteContainer(cID)
391 392
 
... ...
@@ -424,6 +434,7 @@ func (s *DockerSuite) TestCpFromCaseE(c *check.C) {
424 424
 // F. SRC specifies a directory and DST exists as a file. This should cause an
425 425
 //    error as it is not possible to overwrite a file with a directory.
426 426
 func (s *DockerSuite) TestCpFromCaseF(c *check.C) {
427
+	testRequires(c, DaemonIsLinux)
427 428
 	cID := makeTestContainer(c, testContainerOptions{
428 429
 		addContent: true, workDir: "/root",
429 430
 	})
... ...
@@ -451,6 +462,7 @@ func (s *DockerSuite) TestCpFromCaseF(c *check.C) {
451 451
 //    the SRC directory and all its contents to the DST directory. Ensure this
452 452
 //    works whether DST has a trailing path separator or not.
453 453
 func (s *DockerSuite) TestCpFromCaseG(c *check.C) {
454
+	testRequires(c, DaemonIsLinux)
454 455
 	cID := makeTestContainer(c, testContainerOptions{
455 456
 		addContent: true, workDir: "/root",
456 457
 	})
... ...
@@ -500,6 +512,7 @@ func (s *DockerSuite) TestCpFromCaseG(c *check.C) {
500 500
 //    directory (but not the directory itself) into the DST directory. Ensure
501 501
 //    this works whether DST has a trailing path separator or not.
502 502
 func (s *DockerSuite) TestCpFromCaseH(c *check.C) {
503
+	testRequires(c, DaemonIsLinux)
503 504
 	cID := makeTestContainer(c, testContainerOptions{addContent: true})
504 505
 	defer deleteContainer(cID)
505 506
 
... ...
@@ -539,6 +552,7 @@ func (s *DockerSuite) TestCpFromCaseH(c *check.C) {
539 539
 //    should cause an error as it is not possible to overwrite a file with a
540 540
 //    directory.
541 541
 func (s *DockerSuite) TestCpFromCaseI(c *check.C) {
542
+	testRequires(c, DaemonIsLinux)
542 543
 	cID := makeTestContainer(c, testContainerOptions{
543 544
 		addContent: true, workDir: "/root",
544 545
 	})
... ...
@@ -567,6 +581,7 @@ func (s *DockerSuite) TestCpFromCaseI(c *check.C) {
567 567
 //    itself) into the DST directory. Ensure this works whether DST has a
568 568
 //    trailing path separator or not.
569 569
 func (s *DockerSuite) TestCpFromCaseJ(c *check.C) {
570
+	testRequires(c, DaemonIsLinux)
570 571
 	cID := makeTestContainer(c, testContainerOptions{
571 572
 		addContent: true, workDir: "/root",
572 573
 	})
... ...
@@ -38,6 +38,7 @@ func (s *DockerSuite) TestCpLocalOnly(c *check.C) {
38 38
 // Test for #5656
39 39
 // Check that garbage paths don't escape the container's rootfs
40 40
 func (s *DockerSuite) TestCpGarbagePath(c *check.C) {
41
+	testRequires(c, DaemonIsLinux)
41 42
 	out, exitCode := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "mkdir -p '"+cpTestPath+"' && echo -n '"+cpContainerContents+"' > "+cpFullPath)
42 43
 	if exitCode != 0 {
43 44
 		c.Fatal("failed to create a container", out)
... ...
@@ -95,6 +96,7 @@ func (s *DockerSuite) TestCpGarbagePath(c *check.C) {
95 95
 
96 96
 // Check that relative paths are relative to the container's rootfs
97 97
 func (s *DockerSuite) TestCpRelativePath(c *check.C) {
98
+	testRequires(c, DaemonIsLinux)
98 99
 	out, exitCode := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "mkdir -p '"+cpTestPath+"' && echo -n '"+cpContainerContents+"' > "+cpFullPath)
99 100
 	if exitCode != 0 {
100 101
 		c.Fatal("failed to create a container", out)
... ...
@@ -160,6 +162,7 @@ func (s *DockerSuite) TestCpRelativePath(c *check.C) {
160 160
 
161 161
 // Check that absolute paths are relative to the container's rootfs
162 162
 func (s *DockerSuite) TestCpAbsolutePath(c *check.C) {
163
+	testRequires(c, DaemonIsLinux)
163 164
 	out, exitCode := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "mkdir -p '"+cpTestPath+"' && echo -n '"+cpContainerContents+"' > "+cpFullPath)
164 165
 	if exitCode != 0 {
165 166
 		c.Fatal("failed to create a container", out)
... ...
@@ -219,6 +222,7 @@ func (s *DockerSuite) TestCpAbsolutePath(c *check.C) {
219 219
 // Test for #5619
220 220
 // Check that absolute symlinks are still relative to the container's rootfs
221 221
 func (s *DockerSuite) TestCpAbsoluteSymlink(c *check.C) {
222
+	testRequires(c, DaemonIsLinux)
222 223
 	out, exitCode := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "mkdir -p '"+cpTestPath+"' && echo -n '"+cpContainerContents+"' > "+cpFullPath+" && ln -s "+cpFullPath+" container_path")
223 224
 	if exitCode != 0 {
224 225
 		c.Fatal("failed to create a container", out)
... ...
@@ -271,6 +275,7 @@ func (s *DockerSuite) TestCpAbsoluteSymlink(c *check.C) {
271 271
 // Check that symlinks to a directory behave as expected when copying one from
272 272
 // a container.
273 273
 func (s *DockerSuite) TestCpFromSymlinkToDirectory(c *check.C) {
274
+	testRequires(c, DaemonIsLinux)
274 275
 	out, exitCode := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "mkdir -p '"+cpTestPath+"' && echo -n '"+cpContainerContents+"' > "+cpFullPath+" && ln -s "+cpTestPathParent+" /dir_link")
275 276
 	if exitCode != 0 {
276 277
 		c.Fatal("failed to create a container", out)
... ...
@@ -330,6 +335,7 @@ func (s *DockerSuite) TestCpFromSymlinkToDirectory(c *check.C) {
330 330
 // Check that symlinks to a directory behave as expected when copying one to a
331 331
 // container.
332 332
 func (s *DockerSuite) TestCpToSymlinkToDirectory(c *check.C) {
333
+	testRequires(c, DaemonIsLinux)
333 334
 	testRequires(c, SameHostDaemon) // Requires local volume mount bind.
334 335
 
335 336
 	testVol, err := ioutil.TempDir("", "test-cp-to-symlink-to-dir-")
... ...
@@ -434,6 +440,7 @@ func (s *DockerSuite) TestCpToSymlinkToDirectory(c *check.C) {
434 434
 // Test for #5619
435 435
 // Check that symlinks which are part of the resource path are still relative to the container's rootfs
436 436
 func (s *DockerSuite) TestCpSymlinkComponent(c *check.C) {
437
+	testRequires(c, DaemonIsLinux)
437 438
 	out, exitCode := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "mkdir -p '"+cpTestPath+"' && echo -n '"+cpContainerContents+"' > "+cpFullPath+" && ln -s "+cpTestPath+" container_path")
438 439
 	if exitCode != 0 {
439 440
 		c.Fatal("failed to create a container", out)
... ...
@@ -492,6 +499,7 @@ func (s *DockerSuite) TestCpSymlinkComponent(c *check.C) {
492 492
 
493 493
 // Check that cp with unprivileged user doesn't return any error
494 494
 func (s *DockerSuite) TestCpUnprivilegedUser(c *check.C) {
495
+	testRequires(c, DaemonIsLinux)
495 496
 	testRequires(c, UnixCli) // uses chmod/su: not available on windows
496 497
 
497 498
 	out, exitCode := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "touch "+cpTestName)
... ...
@@ -527,6 +535,7 @@ func (s *DockerSuite) TestCpUnprivilegedUser(c *check.C) {
527 527
 }
528 528
 
529 529
 func (s *DockerSuite) TestCpSpecialFiles(c *check.C) {
530
+	testRequires(c, DaemonIsLinux)
530 531
 	testRequires(c, SameHostDaemon)
531 532
 
532 533
 	outDir, err := ioutil.TempDir("", "cp-test-special-files")
... ...
@@ -580,6 +589,7 @@ func (s *DockerSuite) TestCpSpecialFiles(c *check.C) {
580 580
 }
581 581
 
582 582
 func (s *DockerSuite) TestCpVolumePath(c *check.C) {
583
+	testRequires(c, DaemonIsLinux)
583 584
 	testRequires(c, SameHostDaemon)
584 585
 
585 586
 	tmpDir, err := ioutil.TempDir("", "cp-test-volumepath")
... ...
@@ -679,6 +689,7 @@ func (s *DockerSuite) TestCpVolumePath(c *check.C) {
679 679
 }
680 680
 
681 681
 func (s *DockerSuite) TestCpToDot(c *check.C) {
682
+	testRequires(c, DaemonIsLinux)
682 683
 	out, exitCode := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "echo lololol > /test")
683 684
 	if exitCode != 0 {
684 685
 		c.Fatal("failed to create a container", out)
... ...
@@ -712,6 +723,7 @@ func (s *DockerSuite) TestCpToDot(c *check.C) {
712 712
 }
713 713
 
714 714
 func (s *DockerSuite) TestCpToStdout(c *check.C) {
715
+	testRequires(c, DaemonIsLinux)
715 716
 	out, exitCode := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "echo lololol > /test")
716 717
 	if exitCode != 0 {
717 718
 		c.Fatalf("failed to create a container:%s\n", out)
... ...
@@ -765,6 +777,7 @@ func (s *DockerSuite) TestCpNameHasColon(c *check.C) {
765 765
 }
766 766
 
767 767
 func (s *DockerSuite) TestCopyAndRestart(c *check.C) {
768
+	testRequires(c, DaemonIsLinux)
768 769
 	expectedMsg := "hello"
769 770
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "echo", expectedMsg)
770 771
 	id := strings.TrimSpace(string(out))
... ...
@@ -793,6 +806,7 @@ func (s *DockerSuite) TestCopyAndRestart(c *check.C) {
793 793
 }
794 794
 
795 795
 func (s *DockerSuite) TestCopyCreatedContainer(c *check.C) {
796
+	testRequires(c, DaemonIsLinux)
796 797
 	dockerCmd(c, "create", "--name", "test_cp", "-v", "/test", "busybox")
797 798
 
798 799
 	tmpDir, err := ioutil.TempDir("", "test")
... ...
@@ -22,6 +22,7 @@ import (
22 22
 
23 23
 // Test for error when SRC does not exist.
24 24
 func (s *DockerSuite) TestCpToErrSrcNotExists(c *check.C) {
25
+	testRequires(c, DaemonIsLinux)
25 26
 	cID := makeTestContainer(c, testContainerOptions{})
26 27
 	defer deleteContainer(cID)
27 28
 
... ...
@@ -44,6 +45,7 @@ func (s *DockerSuite) TestCpToErrSrcNotExists(c *check.C) {
44 44
 // Test for error when SRC ends in a trailing
45 45
 // path separator but it exists as a file.
46 46
 func (s *DockerSuite) TestCpToErrSrcNotDir(c *check.C) {
47
+	testRequires(c, DaemonIsLinux)
47 48
 	cID := makeTestContainer(c, testContainerOptions{})
48 49
 	defer deleteContainer(cID)
49 50
 
... ...
@@ -68,6 +70,7 @@ func (s *DockerSuite) TestCpToErrSrcNotDir(c *check.C) {
68 68
 // Test for error when SRC is a valid file or directory,
69 69
 // bu the DST parent directory does not exist.
70 70
 func (s *DockerSuite) TestCpToErrDstParentNotExists(c *check.C) {
71
+	testRequires(c, DaemonIsLinux)
71 72
 	cID := makeTestContainer(c, testContainerOptions{addContent: true})
72 73
 	defer deleteContainer(cID)
73 74
 
... ...
@@ -105,6 +108,7 @@ func (s *DockerSuite) TestCpToErrDstParentNotExists(c *check.C) {
105 105
 // file. Also test that we cannot overwirite an existing directory with a
106 106
 // non-directory and cannot overwrite an existing
107 107
 func (s *DockerSuite) TestCpToErrDstNotDir(c *check.C) {
108
+	testRequires(c, DaemonIsLinux)
108 109
 	cID := makeTestContainer(c, testContainerOptions{addContent: true})
109 110
 	defer deleteContainer(cID)
110 111
 
... ...
@@ -149,6 +153,7 @@ func (s *DockerSuite) TestCpToErrDstNotDir(c *check.C) {
149 149
 // Check that copying from a local path to a symlink in a container copies to
150 150
 // the symlink target and does not overwrite the container symlink itself.
151 151
 func (s *DockerSuite) TestCpToSymlinkDestination(c *check.C) {
152
+	testRequires(c, DaemonIsLinux)
152 153
 	testRequires(c, SameHostDaemon) // Requires local volume mount bind.
153 154
 
154 155
 	testVol := getTestDir(c, "test-cp-to-symlink-destination-")
... ...
@@ -278,6 +283,7 @@ func (s *DockerSuite) TestCpToSymlinkDestination(c *check.C) {
278 278
 //    exist. This should create a file with the name DST and copy the
279 279
 //    contents of the source file into it.
280 280
 func (s *DockerSuite) TestCpToCaseA(c *check.C) {
281
+	testRequires(c, DaemonIsLinux)
281 282
 	cID := makeTestContainer(c, testContainerOptions{
282 283
 		workDir: "/root", command: makeCatFileCommand("itWorks.txt"),
283 284
 	})
... ...
@@ -304,6 +310,7 @@ func (s *DockerSuite) TestCpToCaseA(c *check.C) {
304 304
 //    exist. This should cause an error because the copy operation cannot
305 305
 //    create a directory when copying a single file.
306 306
 func (s *DockerSuite) TestCpToCaseB(c *check.C) {
307
+	testRequires(c, DaemonIsLinux)
307 308
 	cID := makeTestContainer(c, testContainerOptions{
308 309
 		command: makeCatFileCommand("testDir/file1"),
309 310
 	})
... ...
@@ -330,6 +337,7 @@ func (s *DockerSuite) TestCpToCaseB(c *check.C) {
330 330
 // C. SRC specifies a file and DST exists as a file. This should overwrite
331 331
 //    the file at DST with the contents of the source file.
332 332
 func (s *DockerSuite) TestCpToCaseC(c *check.C) {
333
+	testRequires(c, DaemonIsLinux)
333 334
 	cID := makeTestContainer(c, testContainerOptions{
334 335
 		addContent: true, workDir: "/root",
335 336
 		command: makeCatFileCommand("file2"),
... ...
@@ -363,6 +371,7 @@ func (s *DockerSuite) TestCpToCaseC(c *check.C) {
363 363
 //    a copy of the source file inside it using the basename from SRC. Ensure
364 364
 //    this works whether DST has a trailing path separator or not.
365 365
 func (s *DockerSuite) TestCpToCaseD(c *check.C) {
366
+	testRequires(c, DaemonIsLinux)
366 367
 	cID := makeTestContainer(c, testContainerOptions{
367 368
 		addContent: true,
368 369
 		command:    makeCatFileCommand("/dir1/file1"),
... ...
@@ -422,6 +431,7 @@ func (s *DockerSuite) TestCpToCaseD(c *check.C) {
422 422
 //    directory. Ensure this works whether DST has a trailing path separator or
423 423
 //    not.
424 424
 func (s *DockerSuite) TestCpToCaseE(c *check.C) {
425
+	testRequires(c, DaemonIsLinux)
425 426
 	cID := makeTestContainer(c, testContainerOptions{
426 427
 		command: makeCatFileCommand("/testDir/file1-1"),
427 428
 	})
... ...
@@ -468,6 +478,7 @@ func (s *DockerSuite) TestCpToCaseE(c *check.C) {
468 468
 // F. SRC specifies a directory and DST exists as a file. This should cause an
469 469
 //    error as it is not possible to overwrite a file with a directory.
470 470
 func (s *DockerSuite) TestCpToCaseF(c *check.C) {
471
+	testRequires(c, DaemonIsLinux)
471 472
 	cID := makeTestContainer(c, testContainerOptions{
472 473
 		addContent: true, workDir: "/root",
473 474
 	})
... ...
@@ -495,6 +506,7 @@ func (s *DockerSuite) TestCpToCaseF(c *check.C) {
495 495
 //    the SRC directory and all its contents to the DST directory. Ensure this
496 496
 //    works whether DST has a trailing path separator or not.
497 497
 func (s *DockerSuite) TestCpToCaseG(c *check.C) {
498
+	testRequires(c, DaemonIsLinux)
498 499
 	cID := makeTestContainer(c, testContainerOptions{
499 500
 		addContent: true, workDir: "/root",
500 501
 		command: makeCatFileCommand("dir2/dir1/file1-1"),
... ...
@@ -554,6 +566,7 @@ func (s *DockerSuite) TestCpToCaseG(c *check.C) {
554 554
 //    directory (but not the directory itself) into the DST directory. Ensure
555 555
 //    this works whether DST has a trailing path separator or not.
556 556
 func (s *DockerSuite) TestCpToCaseH(c *check.C) {
557
+	testRequires(c, DaemonIsLinux)
557 558
 	cID := makeTestContainer(c, testContainerOptions{
558 559
 		command: makeCatFileCommand("/testDir/file1-1"),
559 560
 	})
... ...
@@ -600,6 +613,7 @@ func (s *DockerSuite) TestCpToCaseH(c *check.C) {
600 600
 //    should cause an error as it is not possible to overwrite a file with a
601 601
 //    directory.
602 602
 func (s *DockerSuite) TestCpToCaseI(c *check.C) {
603
+	testRequires(c, DaemonIsLinux)
603 604
 	cID := makeTestContainer(c, testContainerOptions{
604 605
 		addContent: true, workDir: "/root",
605 606
 	})
... ...
@@ -628,6 +642,7 @@ func (s *DockerSuite) TestCpToCaseI(c *check.C) {
628 628
 //    itself) into the DST directory. Ensure this works whether DST has a
629 629
 //    trailing path separator or not.
630 630
 func (s *DockerSuite) TestCpToCaseJ(c *check.C) {
631
+	testRequires(c, DaemonIsLinux)
631 632
 	cID := makeTestContainer(c, testContainerOptions{
632 633
 		addContent: true, workDir: "/root",
633 634
 		command: makeCatFileCommand("/dir2/file1-1"),
... ...
@@ -684,6 +699,7 @@ func (s *DockerSuite) TestCpToCaseJ(c *check.C) {
684 684
 // The `docker cp` command should also ensure that you cannot
685 685
 // write to a container rootfs that is marked as read-only.
686 686
 func (s *DockerSuite) TestCpToErrReadOnlyRootfs(c *check.C) {
687
+	testRequires(c, DaemonIsLinux)
687 688
 	tmpDir := getTestDir(c, "test-cp-to-err-read-only-rootfs")
688 689
 	defer os.RemoveAll(tmpDir)
689 690
 
... ...
@@ -716,6 +732,7 @@ func (s *DockerSuite) TestCpToErrReadOnlyRootfs(c *check.C) {
716 716
 // The `docker cp` command should also ensure that you
717 717
 // cannot write to a volume that is mounted as read-only.
718 718
 func (s *DockerSuite) TestCpToErrReadOnlyVolume(c *check.C) {
719
+	testRequires(c, DaemonIsLinux)
719 720
 	tmpDir := getTestDir(c, "test-cp-to-err-read-only-volume")
720 721
 	defer os.RemoveAll(tmpDir)
721 722
 
... ...
@@ -18,6 +18,7 @@ import (
18 18
 
19 19
 // Make sure we can create a simple container with some args
20 20
 func (s *DockerSuite) TestCreateArgs(c *check.C) {
21
+	testRequires(c, DaemonIsLinux)
21 22
 	out, _ := dockerCmd(c, "create", "busybox", "command", "arg1", "arg2", "arg with space")
22 23
 
23 24
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -59,7 +60,7 @@ func (s *DockerSuite) TestCreateArgs(c *check.C) {
59 59
 
60 60
 // Make sure we can set hostconfig options too
61 61
 func (s *DockerSuite) TestCreateHostConfig(c *check.C) {
62
-
62
+	testRequires(c, DaemonIsLinux)
63 63
 	out, _ := dockerCmd(c, "create", "-P", "busybox", "echo")
64 64
 
65 65
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -90,7 +91,7 @@ func (s *DockerSuite) TestCreateHostConfig(c *check.C) {
90 90
 }
91 91
 
92 92
 func (s *DockerSuite) TestCreateWithPortRange(c *check.C) {
93
-
93
+	testRequires(c, DaemonIsLinux)
94 94
 	out, _ := dockerCmd(c, "create", "-p", "3300-3303:3300-3303/tcp", "busybox", "echo")
95 95
 
96 96
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -129,7 +130,7 @@ func (s *DockerSuite) TestCreateWithPortRange(c *check.C) {
129 129
 }
130 130
 
131 131
 func (s *DockerSuite) TestCreateWithiLargePortRange(c *check.C) {
132
-
132
+	testRequires(c, DaemonIsLinux)
133 133
 	out, _ := dockerCmd(c, "create", "-p", "1-65535:1-65535/tcp", "busybox", "echo")
134 134
 
135 135
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -169,6 +170,7 @@ func (s *DockerSuite) TestCreateWithiLargePortRange(c *check.C) {
169 169
 
170 170
 // "test123" should be printed by docker create + start
171 171
 func (s *DockerSuite) TestCreateEchoStdout(c *check.C) {
172
+	testRequires(c, DaemonIsLinux)
172 173
 
173 174
 	out, _ := dockerCmd(c, "create", "busybox", "echo", "test123")
174 175
 
... ...
@@ -183,6 +185,7 @@ func (s *DockerSuite) TestCreateEchoStdout(c *check.C) {
183 183
 }
184 184
 
185 185
 func (s *DockerSuite) TestCreateVolumesCreated(c *check.C) {
186
+	testRequires(c, DaemonIsLinux)
186 187
 	testRequires(c, SameHostDaemon)
187 188
 
188 189
 	name := "test_create_volume"
... ...
@@ -203,6 +206,7 @@ func (s *DockerSuite) TestCreateVolumesCreated(c *check.C) {
203 203
 }
204 204
 
205 205
 func (s *DockerSuite) TestCreateLabels(c *check.C) {
206
+	testRequires(c, DaemonIsLinux)
206 207
 	name := "test_create_labels"
207 208
 	expected := map[string]string{"k1": "v1", "k2": "v2"}
208 209
 	dockerCmd(c, "create", "--name", name, "-l", "k1=v1", "--label", "k2=v2", "busybox")
... ...
@@ -219,6 +223,7 @@ func (s *DockerSuite) TestCreateLabels(c *check.C) {
219 219
 }
220 220
 
221 221
 func (s *DockerSuite) TestCreateLabelFromImage(c *check.C) {
222
+	testRequires(c, DaemonIsLinux)
222 223
 	imageName := "testcreatebuildlabel"
223 224
 	_, err := buildImage(imageName,
224 225
 		`FROM busybox
... ...
@@ -244,6 +249,7 @@ func (s *DockerSuite) TestCreateLabelFromImage(c *check.C) {
244 244
 }
245 245
 
246 246
 func (s *DockerSuite) TestCreateHostnameWithNumber(c *check.C) {
247
+	testRequires(c, DaemonIsLinux)
247 248
 	out, _ := dockerCmd(c, "run", "-h", "web.0", "busybox", "hostname")
248 249
 	if strings.TrimSpace(out) != "web.0" {
249 250
 		c.Fatalf("hostname not set, expected `web.0`, got: %s", out)
... ...
@@ -251,6 +257,7 @@ func (s *DockerSuite) TestCreateHostnameWithNumber(c *check.C) {
251 251
 }
252 252
 
253 253
 func (s *DockerSuite) TestCreateRM(c *check.C) {
254
+	testRequires(c, DaemonIsLinux)
254 255
 	// Test to make sure we can 'rm' a new container that is in
255 256
 	// "Created" state, and has ever been run. Test "rm -f" too.
256 257
 
... ...
@@ -268,6 +275,7 @@ func (s *DockerSuite) TestCreateRM(c *check.C) {
268 268
 }
269 269
 
270 270
 func (s *DockerSuite) TestCreateModeIpcContainer(c *check.C) {
271
+	testRequires(c, DaemonIsLinux)
271 272
 	testRequires(c, SameHostDaemon)
272 273
 
273 274
 	out, _ := dockerCmd(c, "create", "busybox")
... ...
@@ -8,6 +8,7 @@ import (
8 8
 
9 9
 // ensure that an added file shows up in docker diff
10 10
 func (s *DockerSuite) TestDiffFilenameShownInOutput(c *check.C) {
11
+	testRequires(c, DaemonIsLinux)
11 12
 	containerCmd := `echo foo > /root/bar`
12 13
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "sh", "-c", containerCmd)
13 14
 
... ...
@@ -28,6 +29,7 @@ func (s *DockerSuite) TestDiffFilenameShownInOutput(c *check.C) {
28 28
 
29 29
 // test to ensure GH #3840 doesn't occur any more
30 30
 func (s *DockerSuite) TestDiffEnsureDockerinitFilesAreIgnored(c *check.C) {
31
+	testRequires(c, DaemonIsLinux)
31 32
 	// this is a list of files which shouldn't show up in `docker diff`
32 33
 	dockerinitFiles := []string{"/etc/resolv.conf", "/etc/hostname", "/etc/hosts", "/.dockerinit", "/.dockerenv"}
33 34
 	containerCount := 5
... ...
@@ -49,6 +51,7 @@ func (s *DockerSuite) TestDiffEnsureDockerinitFilesAreIgnored(c *check.C) {
49 49
 }
50 50
 
51 51
 func (s *DockerSuite) TestDiffEnsureOnlyKmsgAndPtmx(c *check.C) {
52
+	testRequires(c, DaemonIsLinux)
52 53
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "sleep", "0")
53 54
 
54 55
 	cleanCID := strings.TrimSpace(out)
... ...
@@ -17,6 +17,7 @@ import (
17 17
 )
18 18
 
19 19
 func (s *DockerSuite) TestEventsTimestampFormats(c *check.C) {
20
+	testRequires(c, DaemonIsLinux)
20 21
 	image := "busybox"
21 22
 
22 23
 	// Start stopwatch, generate an event
... ...
@@ -48,6 +49,7 @@ func (s *DockerSuite) TestEventsTimestampFormats(c *check.C) {
48 48
 }
49 49
 
50 50
 func (s *DockerSuite) TestEventsUntag(c *check.C) {
51
+	testRequires(c, DaemonIsLinux)
51 52
 	image := "busybox"
52 53
 	dockerCmd(c, "tag", image, "utest:tag1")
53 54
 	dockerCmd(c, "tag", image, "utest:tag2")
... ...
@@ -97,7 +99,7 @@ func (s *DockerSuite) TestEventsContainerFailStartDie(c *check.C) {
97 97
 }
98 98
 
99 99
 func (s *DockerSuite) TestEventsLimit(c *check.C) {
100
-
100
+	testRequires(c, DaemonIsLinux)
101 101
 	var waitGroup sync.WaitGroup
102 102
 	errChan := make(chan error, 17)
103 103
 
... ...
@@ -128,6 +130,7 @@ func (s *DockerSuite) TestEventsLimit(c *check.C) {
128 128
 }
129 129
 
130 130
 func (s *DockerSuite) TestEventsContainerEvents(c *check.C) {
131
+	testRequires(c, DaemonIsLinux)
131 132
 	dockerCmd(c, "run", "--rm", "busybox", "true")
132 133
 	out, _ := dockerCmd(c, "events", "--since=0", fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
133 134
 	events := strings.Split(out, "\n")
... ...
@@ -159,6 +162,7 @@ func (s *DockerSuite) TestEventsContainerEvents(c *check.C) {
159 159
 }
160 160
 
161 161
 func (s *DockerSuite) TestEventsContainerEventsSinceUnixEpoch(c *check.C) {
162
+	testRequires(c, DaemonIsLinux)
162 163
 	dockerCmd(c, "run", "--rm", "busybox", "true")
163 164
 	timeBeginning := time.Unix(0, 0).Format(time.RFC3339Nano)
164 165
 	timeBeginning = strings.Replace(timeBeginning, "Z", ".000000000Z", -1)
... ...
@@ -193,6 +197,7 @@ func (s *DockerSuite) TestEventsContainerEventsSinceUnixEpoch(c *check.C) {
193 193
 }
194 194
 
195 195
 func (s *DockerSuite) TestEventsImageUntagDelete(c *check.C) {
196
+	testRequires(c, DaemonIsLinux)
196 197
 	name := "testimageevents"
197 198
 	_, err := buildImage(name,
198 199
 		`FROM scratch
... ...
@@ -222,6 +227,7 @@ func (s *DockerSuite) TestEventsImageUntagDelete(c *check.C) {
222 222
 }
223 223
 
224 224
 func (s *DockerSuite) TestEventsImageTag(c *check.C) {
225
+	testRequires(c, DaemonIsLinux)
225 226
 	time.Sleep(1 * time.Second) // because API has seconds granularity
226 227
 	since := daemonTime(c).Unix()
227 228
 	image := "testimageevents:tag"
... ...
@@ -245,6 +251,7 @@ func (s *DockerSuite) TestEventsImageTag(c *check.C) {
245 245
 }
246 246
 
247 247
 func (s *DockerSuite) TestEventsImagePull(c *check.C) {
248
+	testRequires(c, DaemonIsLinux)
248 249
 	since := daemonTime(c).Unix()
249 250
 	testRequires(c, Network)
250 251
 
... ...
@@ -264,6 +271,7 @@ func (s *DockerSuite) TestEventsImagePull(c *check.C) {
264 264
 }
265 265
 
266 266
 func (s *DockerSuite) TestEventsImageImport(c *check.C) {
267
+	testRequires(c, DaemonIsLinux)
267 268
 	since := daemonTime(c).Unix()
268 269
 
269 270
 	id := make(chan string)
... ...
@@ -312,6 +320,7 @@ func (s *DockerSuite) TestEventsImageImport(c *check.C) {
312 312
 }
313 313
 
314 314
 func (s *DockerSuite) TestEventsFilters(c *check.C) {
315
+	testRequires(c, DaemonIsLinux)
315 316
 	parseEvents := func(out, match string) {
316 317
 		events := strings.Split(out, "\n")
317 318
 		events = events[:len(events)-1]
... ...
@@ -342,6 +351,7 @@ func (s *DockerSuite) TestEventsFilters(c *check.C) {
342 342
 }
343 343
 
344 344
 func (s *DockerSuite) TestEventsFilterImageName(c *check.C) {
345
+	testRequires(c, DaemonIsLinux)
345 346
 	since := daemonTime(c).Unix()
346 347
 
347 348
 	out, _ := dockerCmd(c, "run", "--name", "container_1", "-d", "busybox:latest", "true")
... ...
@@ -374,6 +384,7 @@ func (s *DockerSuite) TestEventsFilterImageName(c *check.C) {
374 374
 }
375 375
 
376 376
 func (s *DockerSuite) TestEventsFilterContainer(c *check.C) {
377
+	testRequires(c, DaemonIsLinux)
377 378
 	since := fmt.Sprintf("%d", daemonTime(c).Unix())
378 379
 	nameID := make(map[string]string)
379 380
 
... ...
@@ -425,6 +436,7 @@ func (s *DockerSuite) TestEventsFilterContainer(c *check.C) {
425 425
 }
426 426
 
427 427
 func (s *DockerSuite) TestEventsStreaming(c *check.C) {
428
+	testRequires(c, DaemonIsLinux)
428 429
 	start := daemonTime(c).Unix()
429 430
 
430 431
 	id := make(chan string)
... ...
@@ -502,6 +514,7 @@ func (s *DockerSuite) TestEventsStreaming(c *check.C) {
502 502
 }
503 503
 
504 504
 func (s *DockerSuite) TestEventsCommit(c *check.C) {
505
+	testRequires(c, DaemonIsLinux)
505 506
 	since := daemonTime(c).Unix()
506 507
 
507 508
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
... ...
@@ -518,6 +531,7 @@ func (s *DockerSuite) TestEventsCommit(c *check.C) {
518 518
 }
519 519
 
520 520
 func (s *DockerSuite) TestEventsCopy(c *check.C) {
521
+	testRequires(c, DaemonIsLinux)
521 522
 	since := daemonTime(c).Unix()
522 523
 
523 524
 	// Build a test image.
... ...
@@ -557,6 +571,7 @@ func (s *DockerSuite) TestEventsCopy(c *check.C) {
557 557
 }
558 558
 
559 559
 func (s *DockerSuite) TestEventsResize(c *check.C) {
560
+	testRequires(c, DaemonIsLinux)
560 561
 	since := daemonTime(c).Unix()
561 562
 
562 563
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
... ...
@@ -577,6 +592,7 @@ func (s *DockerSuite) TestEventsResize(c *check.C) {
577 577
 }
578 578
 
579 579
 func (s *DockerSuite) TestEventsAttach(c *check.C) {
580
+	testRequires(c, DaemonIsLinux)
580 581
 	since := daemonTime(c).Unix()
581 582
 
582 583
 	out, _ := dockerCmd(c, "run", "-di", "busybox", "/bin/cat")
... ...
@@ -613,6 +629,7 @@ func (s *DockerSuite) TestEventsAttach(c *check.C) {
613 613
 }
614 614
 
615 615
 func (s *DockerSuite) TestEventsRename(c *check.C) {
616
+	testRequires(c, DaemonIsLinux)
616 617
 	since := daemonTime(c).Unix()
617 618
 
618 619
 	dockerCmd(c, "run", "--name", "oldName", "busybox", "true")
... ...
@@ -625,6 +642,7 @@ func (s *DockerSuite) TestEventsRename(c *check.C) {
625 625
 }
626 626
 
627 627
 func (s *DockerSuite) TestEventsTop(c *check.C) {
628
+	testRequires(c, DaemonIsLinux)
628 629
 	since := daemonTime(c).Unix()
629 630
 
630 631
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
... ...
@@ -642,6 +660,7 @@ func (s *DockerSuite) TestEventsTop(c *check.C) {
642 642
 
643 643
 // #13753
644 644
 func (s *DockerSuite) TestEventsDefaultEmpty(c *check.C) {
645
+	testRequires(c, DaemonIsLinux)
645 646
 	dockerCmd(c, "run", "busybox")
646 647
 	out, _ := dockerCmd(c, "events", fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
647 648
 	c.Assert(strings.TrimSpace(out), check.Equals, "")
... ...
@@ -649,6 +668,7 @@ func (s *DockerSuite) TestEventsDefaultEmpty(c *check.C) {
649 649
 
650 650
 // #14316
651 651
 func (s *DockerRegistrySuite) TestEventsImageFilterPush(c *check.C) {
652
+	testRequires(c, DaemonIsLinux)
652 653
 	testRequires(c, Network)
653 654
 	since := daemonTime(c).Unix()
654 655
 	repoName := fmt.Sprintf("%v/dockercli/testf", privateRegistryURL)
... ...
@@ -19,6 +19,7 @@ import (
19 19
 )
20 20
 
21 21
 func (s *DockerSuite) TestExec(c *check.C) {
22
+	testRequires(c, DaemonIsLinux)
22 23
 	dockerCmd(c, "run", "-d", "--name", "testing", "busybox", "sh", "-c", "echo test > /tmp/file && top")
23 24
 
24 25
 	out, _ := dockerCmd(c, "exec", "testing", "cat", "/tmp/file")
... ...
@@ -30,6 +31,7 @@ func (s *DockerSuite) TestExec(c *check.C) {
30 30
 }
31 31
 
32 32
 func (s *DockerSuite) TestExecInteractive(c *check.C) {
33
+	testRequires(c, DaemonIsLinux)
33 34
 	dockerCmd(c, "run", "-d", "--name", "testing", "busybox", "sh", "-c", "echo test > /tmp/file && top")
34 35
 
35 36
 	execCmd := exec.Command(dockerBinary, "exec", "-i", "testing", "sh")
... ...
@@ -76,6 +78,7 @@ func (s *DockerSuite) TestExecInteractive(c *check.C) {
76 76
 }
77 77
 
78 78
 func (s *DockerSuite) TestExecAfterContainerRestart(c *check.C) {
79
+	testRequires(c, DaemonIsLinux)
79 80
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
80 81
 	cleanedContainerID := strings.TrimSpace(out)
81 82
 	dockerCmd(c, "restart", cleanedContainerID)
... ...
@@ -88,6 +91,7 @@ func (s *DockerSuite) TestExecAfterContainerRestart(c *check.C) {
88 88
 }
89 89
 
90 90
 func (s *DockerDaemonSuite) TestExecAfterDaemonRestart(c *check.C) {
91
+	testRequires(c, DaemonIsLinux)
91 92
 	testRequires(c, SameHostDaemon)
92 93
 
93 94
 	if err := s.d.StartWithBusybox(); err != nil {
... ...
@@ -119,6 +123,7 @@ func (s *DockerDaemonSuite) TestExecAfterDaemonRestart(c *check.C) {
119 119
 
120 120
 // Regression test for #9155, #9044
121 121
 func (s *DockerSuite) TestExecEnv(c *check.C) {
122
+	testRequires(c, DaemonIsLinux)
122 123
 	dockerCmd(c, "run", "-e", "LALA=value1", "-e", "LALA=value2",
123 124
 		"-d", "--name", "testing", "busybox", "top")
124 125
 
... ...
@@ -131,6 +136,7 @@ func (s *DockerSuite) TestExecEnv(c *check.C) {
131 131
 }
132 132
 
133 133
 func (s *DockerSuite) TestExecExitStatus(c *check.C) {
134
+	testRequires(c, DaemonIsLinux)
134 135
 	dockerCmd(c, "run", "-d", "--name", "top", "busybox", "top")
135 136
 
136 137
 	// Test normal (non-detached) case first
... ...
@@ -142,6 +148,7 @@ func (s *DockerSuite) TestExecExitStatus(c *check.C) {
142 142
 }
143 143
 
144 144
 func (s *DockerSuite) TestExecPausedContainer(c *check.C) {
145
+	testRequires(c, DaemonIsLinux)
145 146
 	defer unpauseAllContainers()
146 147
 
147 148
 	out, _ := dockerCmd(c, "run", "-d", "--name", "testing", "busybox", "top")
... ...
@@ -161,6 +168,7 @@ func (s *DockerSuite) TestExecPausedContainer(c *check.C) {
161 161
 
162 162
 // regression test for #9476
163 163
 func (s *DockerSuite) TestExecTtyCloseStdin(c *check.C) {
164
+	testRequires(c, DaemonIsLinux)
164 165
 	dockerCmd(c, "run", "-d", "-it", "--name", "exec_tty_stdin", "busybox")
165 166
 
166 167
 	cmd := exec.Command(dockerBinary, "exec", "-i", "exec_tty_stdin", "cat")
... ...
@@ -184,6 +192,7 @@ func (s *DockerSuite) TestExecTtyCloseStdin(c *check.C) {
184 184
 }
185 185
 
186 186
 func (s *DockerSuite) TestExecTtyWithoutStdin(c *check.C) {
187
+	testRequires(c, DaemonIsLinux)
187 188
 	out, _ := dockerCmd(c, "run", "-d", "-ti", "busybox")
188 189
 	id := strings.TrimSpace(out)
189 190
 	c.Assert(waitRun(id), check.IsNil)
... ...
@@ -217,6 +226,7 @@ func (s *DockerSuite) TestExecTtyWithoutStdin(c *check.C) {
217 217
 }
218 218
 
219 219
 func (s *DockerSuite) TestExecParseError(c *check.C) {
220
+	testRequires(c, DaemonIsLinux)
220 221
 	dockerCmd(c, "run", "-d", "--name", "top", "busybox", "top")
221 222
 
222 223
 	// Test normal (non-detached) case first
... ...
@@ -227,6 +237,7 @@ func (s *DockerSuite) TestExecParseError(c *check.C) {
227 227
 }
228 228
 
229 229
 func (s *DockerSuite) TestExecStopNotHanging(c *check.C) {
230
+	testRequires(c, DaemonIsLinux)
230 231
 	dockerCmd(c, "run", "-d", "--name", "testing", "busybox", "top")
231 232
 
232 233
 	if err := exec.Command(dockerBinary, "exec", "testing", "top").Start(); err != nil {
... ...
@@ -253,6 +264,7 @@ func (s *DockerSuite) TestExecStopNotHanging(c *check.C) {
253 253
 }
254 254
 
255 255
 func (s *DockerSuite) TestExecCgroup(c *check.C) {
256
+	testRequires(c, DaemonIsLinux)
256 257
 	dockerCmd(c, "run", "-d", "--name", "testing", "busybox", "top")
257 258
 
258 259
 	out, _ := dockerCmd(c, "exec", "testing", "cat", "/proc/1/cgroup")
... ...
@@ -303,6 +315,7 @@ func (s *DockerSuite) TestExecCgroup(c *check.C) {
303 303
 }
304 304
 
305 305
 func (s *DockerSuite) TestInspectExecID(c *check.C) {
306
+	testRequires(c, DaemonIsLinux)
306 307
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
307 308
 	id := strings.TrimSuffix(out, "\n")
308 309
 
... ...
@@ -388,6 +401,7 @@ func (s *DockerSuite) TestInspectExecID(c *check.C) {
388 388
 }
389 389
 
390 390
 func (s *DockerSuite) TestLinksPingLinkedContainersOnRename(c *check.C) {
391
+	testRequires(c, DaemonIsLinux)
391 392
 	var out string
392 393
 	out, _ = dockerCmd(c, "run", "-d", "--name", "container1", "busybox", "top")
393 394
 	idA := strings.TrimSpace(out)
... ...
@@ -517,6 +531,7 @@ func (s *DockerSuite) TestRunMutableNetworkFiles(c *check.C) {
517 517
 }
518 518
 
519 519
 func (s *DockerSuite) TestExecWithUser(c *check.C) {
520
+	testRequires(c, DaemonIsLinux)
520 521
 	dockerCmd(c, "run", "-d", "--name", "parent", "busybox", "top")
521 522
 
522 523
 	out, _ := dockerCmd(c, "exec", "-u", "1", "parent", "id")
... ...
@@ -531,7 +546,7 @@ func (s *DockerSuite) TestExecWithUser(c *check.C) {
531 531
 }
532 532
 
533 533
 func (s *DockerSuite) TestExecWithPrivileged(c *check.C) {
534
-
534
+	testRequires(c, DaemonIsLinux)
535 535
 	// Start main loop which attempts mknod repeatedly
536 536
 	dockerCmd(c, "run", "-d", "--name", "parent", "--cap-drop=ALL", "busybox", "sh", "-c", `while (true); do if [ -e /exec_priv ]; then cat /exec_priv && mknod /tmp/sda b 8 0 && echo "Success"; else echo "Privileged exec has not run yet"; fi; usleep 10000; done`)
537 537
 
... ...
@@ -569,6 +584,7 @@ func (s *DockerSuite) TestExecWithPrivileged(c *check.C) {
569 569
 }
570 570
 
571 571
 func (s *DockerSuite) TestExecWithImageUser(c *check.C) {
572
+	testRequires(c, DaemonIsLinux)
572 573
 	name := "testbuilduser"
573 574
 	_, err := buildImage(name,
574 575
 		`FROM busybox
... ...
@@ -588,6 +604,7 @@ func (s *DockerSuite) TestExecWithImageUser(c *check.C) {
588 588
 }
589 589
 
590 590
 func (s *DockerSuite) TestExecOnReadonlyContainer(c *check.C) {
591
+	testRequires(c, DaemonIsLinux)
591 592
 	dockerCmd(c, "run", "-d", "--read-only", "--name", "parent", "busybox", "top")
592 593
 	if _, status := dockerCmd(c, "exec", "parent", "true"); status != 0 {
593 594
 		c.Fatalf("exec into a read-only container failed with exit status %d", status)
... ...
@@ -596,6 +613,7 @@ func (s *DockerSuite) TestExecOnReadonlyContainer(c *check.C) {
596 596
 
597 597
 // #15750
598 598
 func (s *DockerSuite) TestExecStartFails(c *check.C) {
599
+	testRequires(c, DaemonIsLinux)
599 600
 	name := "exec-15750"
600 601
 	dockerCmd(c, "run", "-d", "--name", name, "busybox", "top")
601 602
 
... ...
@@ -15,6 +15,7 @@ import (
15 15
 
16 16
 // regression test for #12546
17 17
 func (s *DockerSuite) TestExecInteractiveStdinClose(c *check.C) {
18
+	testRequires(c, DaemonIsLinux)
18 19
 	out, _ := dockerCmd(c, "run", "-itd", "busybox", "/bin/cat")
19 20
 	contID := strings.TrimSpace(out)
20 21
 
... ...
@@ -44,6 +45,7 @@ func (s *DockerSuite) TestExecInteractiveStdinClose(c *check.C) {
44 44
 }
45 45
 
46 46
 func (s *DockerSuite) TestExecTTY(c *check.C) {
47
+	testRequires(c, DaemonIsLinux)
47 48
 	dockerCmd(c, "run", "-d", "--name=test", "busybox", "sh", "-c", "echo hello > /foo && top")
48 49
 
49 50
 	cmd := exec.Command(dockerBinary, "exec", "-it", "test", "sh")
... ...
@@ -10,6 +10,7 @@ import (
10 10
 
11 11
 // export an image and try to import it into a new one
12 12
 func (s *DockerSuite) TestExportContainerAndImportImage(c *check.C) {
13
+	testRequires(c, DaemonIsLinux)
13 14
 	containerID := "testexportcontainerandimportimage"
14 15
 
15 16
 	dockerCmd(c, "run", "--name", containerID, "busybox", "true")
... ...
@@ -31,6 +32,7 @@ func (s *DockerSuite) TestExportContainerAndImportImage(c *check.C) {
31 31
 
32 32
 // Used to test output flag in the export command
33 33
 func (s *DockerSuite) TestExportContainerWithOutputAndImportImage(c *check.C) {
34
+	testRequires(c, DaemonIsLinux)
34 35
 	containerID := "testexportcontainerwithoutputandimportimage"
35 36
 
36 37
 	dockerCmd(c, "run", "--name", containerID, "busybox", "true")
... ...
@@ -12,6 +12,7 @@ import (
12 12
 )
13 13
 
14 14
 func (s *DockerSuite) TestHelpTextVerify(c *check.C) {
15
+	testRequires(c, DaemonIsLinux)
15 16
 	// Make sure main help text fits within 80 chars and that
16 17
 	// on non-windows system we use ~ when possible (to shorten things).
17 18
 	// Test for HOME set to its default value and set to "/" on linux
... ...
@@ -251,6 +252,7 @@ func (s *DockerSuite) TestHelpTextVerify(c *check.C) {
251 251
 }
252 252
 
253 253
 func (s *DockerSuite) TestHelpExitCodesHelpOutput(c *check.C) {
254
+	testRequires(c, DaemonIsLinux)
254 255
 	// Test to make sure the exit code and output (stdout vs stderr) of
255 256
 	// various good and bad cases are what we expect
256 257
 
... ...
@@ -12,6 +12,7 @@ import (
12 12
 // This is a heisen-test.  Because the created timestamp of images and the behavior of
13 13
 // sort is not predictable it doesn't always fail.
14 14
 func (s *DockerSuite) TestBuildHistory(c *check.C) {
15
+	testRequires(c, DaemonIsLinux)
15 16
 	name := "testbuildhistory"
16 17
 	_, err := buildImage(name, `FROM busybox
17 18
 RUN echo "A"
... ...
@@ -62,6 +63,7 @@ RUN echo "Z"`,
62 62
 }
63 63
 
64 64
 func (s *DockerSuite) TestHistoryExistentImage(c *check.C) {
65
+	testRequires(c, DaemonIsLinux)
65 66
 	dockerCmd(c, "history", "busybox")
66 67
 }
67 68
 
... ...
@@ -73,6 +75,7 @@ func (s *DockerSuite) TestHistoryNonExistentImage(c *check.C) {
73 73
 }
74 74
 
75 75
 func (s *DockerSuite) TestHistoryImageWithComment(c *check.C) {
76
+	testRequires(c, DaemonIsLinux)
76 77
 	name := "testhistoryimagewithcomment"
77 78
 
78 79
 	// make a image through docker commit <container id> [ -m messages ]
... ...
@@ -95,6 +98,7 @@ func (s *DockerSuite) TestHistoryImageWithComment(c *check.C) {
95 95
 }
96 96
 
97 97
 func (s *DockerSuite) TestHistoryHumanOptionFalse(c *check.C) {
98
+	testRequires(c, DaemonIsLinux)
98 99
 	out, _ := dockerCmd(c, "history", "--human=false", "busybox")
99 100
 	lines := strings.Split(out, "\n")
100 101
 	sizeColumnRegex, _ := regexp.Compile("SIZE +")
... ...
@@ -113,6 +117,7 @@ func (s *DockerSuite) TestHistoryHumanOptionFalse(c *check.C) {
113 113
 }
114 114
 
115 115
 func (s *DockerSuite) TestHistoryHumanOptionTrue(c *check.C) {
116
+	testRequires(c, DaemonIsLinux)
116 117
 	out, _ := dockerCmd(c, "history", "--human=true", "busybox")
117 118
 	lines := strings.Split(out, "\n")
118 119
 	sizeColumnRegex, _ := regexp.Compile("SIZE +")
... ...
@@ -12,6 +12,7 @@ import (
12 12
 )
13 13
 
14 14
 func (s *DockerSuite) TestImagesEnsureImageIsListed(c *check.C) {
15
+	testRequires(c, DaemonIsLinux)
15 16
 	out, _ := dockerCmd(c, "images")
16 17
 	if !strings.Contains(out, "busybox") {
17 18
 		c.Fatal("images should've listed busybox")
... ...
@@ -19,6 +20,7 @@ func (s *DockerSuite) TestImagesEnsureImageIsListed(c *check.C) {
19 19
 }
20 20
 
21 21
 func (s *DockerSuite) TestImagesEnsureImageWithTagIsListed(c *check.C) {
22
+	testRequires(c, DaemonIsLinux)
22 23
 	_, err := buildImage("imagewithtag:v1",
23 24
 		`FROM scratch
24 25
 		MAINTAINER dockerio1`, true)
... ...
@@ -52,6 +54,7 @@ func (s *DockerSuite) TestImagesEnsureImageWithBadTagIsNotListed(c *check.C) {
52 52
 }
53 53
 
54 54
 func (s *DockerSuite) TestImagesOrderedByCreationDate(c *check.C) {
55
+	testRequires(c, DaemonIsLinux)
55 56
 	id1, err := buildImage("order:test_a",
56 57
 		`FROM scratch
57 58
 		MAINTAINER dockerio1`, true)
... ...
@@ -94,6 +97,7 @@ func (s *DockerSuite) TestImagesErrorWithInvalidFilterNameTest(c *check.C) {
94 94
 }
95 95
 
96 96
 func (s *DockerSuite) TestImagesFilterLabel(c *check.C) {
97
+	testRequires(c, DaemonIsLinux)
97 98
 	imageName1 := "images_filter_test1"
98 99
 	imageName2 := "images_filter_test2"
99 100
 	imageName3 := "images_filter_test3"
... ...
@@ -132,6 +136,7 @@ func (s *DockerSuite) TestImagesFilterLabel(c *check.C) {
132 132
 }
133 133
 
134 134
 func (s *DockerSuite) TestImagesFilterSpaceTrimCase(c *check.C) {
135
+	testRequires(c, DaemonIsLinux)
135 136
 	imageName := "images_filter_test"
136 137
 	buildImage(imageName,
137 138
 		`FROM scratch
... ...
@@ -170,6 +175,7 @@ func (s *DockerSuite) TestImagesFilterSpaceTrimCase(c *check.C) {
170 170
 }
171 171
 
172 172
 func (s *DockerSuite) TestImagesEnsureDanglingImageOnlyListedOnce(c *check.C) {
173
+	testRequires(c, DaemonIsLinux)
173 174
 	// create container 1
174 175
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "true")
175 176
 	containerID1 := strings.TrimSpace(out)
... ...
@@ -12,6 +12,7 @@ import (
12 12
 )
13 13
 
14 14
 func (s *DockerSuite) TestImportDisplay(c *check.C) {
15
+	testRequires(c, DaemonIsLinux)
15 16
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "true")
16 17
 	cleanedContainerID := strings.TrimSpace(out)
17 18
 
... ...
@@ -35,6 +36,7 @@ func (s *DockerSuite) TestImportDisplay(c *check.C) {
35 35
 }
36 36
 
37 37
 func (s *DockerSuite) TestImportBadURL(c *check.C) {
38
+	testRequires(c, DaemonIsLinux)
38 39
 	out, _, err := dockerCmdWithError("import", "http://nourl/bad")
39 40
 	if err == nil {
40 41
 		c.Fatal("import was supposed to fail but didn't")
... ...
@@ -45,6 +47,7 @@ func (s *DockerSuite) TestImportBadURL(c *check.C) {
45 45
 }
46 46
 
47 47
 func (s *DockerSuite) TestImportFile(c *check.C) {
48
+	testRequires(c, DaemonIsLinux)
48 49
 	dockerCmd(c, "run", "--name", "test-import", "busybox", "true")
49 50
 
50 51
 	temporaryFile, err := ioutil.TempFile("", "exportImportTest")
... ...
@@ -74,6 +77,7 @@ func (s *DockerSuite) TestImportFile(c *check.C) {
74 74
 }
75 75
 
76 76
 func (s *DockerSuite) TestImportFileWithMessage(c *check.C) {
77
+	testRequires(c, DaemonIsLinux)
77 78
 	dockerCmd(c, "run", "--name", "test-import", "busybox", "true")
78 79
 
79 80
 	temporaryFile, err := ioutil.TempFile("", "exportImportTest")
... ...
@@ -8,6 +8,7 @@ import (
8 8
 )
9 9
 
10 10
 func (s *DockerSuite) TestInspectNamedMountPoint(c *check.C) {
11
+	testRequires(c, DaemonIsLinux)
11 12
 	dockerCmd(c, "run", "-d", "--name", "test", "-v", "data:/data", "busybox", "cat")
12 13
 
13 14
 	vol, err := inspectFieldJSON("test", "Mounts")
... ...
@@ -14,6 +14,7 @@ import (
14 14
 )
15 15
 
16 16
 func (s *DockerSuite) TestInspectImage(c *check.C) {
17
+	testRequires(c, DaemonIsLinux)
17 18
 	imageTest := "emptyfs"
18 19
 	imageTestID := "511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158"
19 20
 	id, err := inspectField(imageTest, "Id")
... ...
@@ -25,6 +26,7 @@ func (s *DockerSuite) TestInspectImage(c *check.C) {
25 25
 }
26 26
 
27 27
 func (s *DockerSuite) TestInspectInt64(c *check.C) {
28
+	testRequires(c, DaemonIsLinux)
28 29
 	runCmd := exec.Command(dockerBinary, "run", "-d", "-m=300M", "busybox", "true")
29 30
 	out, _, _, err := runCommandWithStdoutStderr(runCmd)
30 31
 	if err != nil {
... ...
@@ -41,7 +43,7 @@ func (s *DockerSuite) TestInspectInt64(c *check.C) {
41 41
 }
42 42
 
43 43
 func (s *DockerSuite) TestInspectDefault(c *check.C) {
44
-
44
+	testRequires(c, DaemonIsLinux)
45 45
 	//Both the container and image are named busybox. docker inspect will fetch the container JSON.
46 46
 	//If the container JSON is not available, it will go for the image JSON.
47 47
 
... ...
@@ -50,6 +52,7 @@ func (s *DockerSuite) TestInspectDefault(c *check.C) {
50 50
 }
51 51
 
52 52
 func (s *DockerSuite) TestInspectStatus(c *check.C) {
53
+	testRequires(c, DaemonIsLinux)
53 54
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
54 55
 	out = strings.TrimSpace(out)
55 56
 
... ...
@@ -82,7 +85,7 @@ func (s *DockerSuite) TestInspectStatus(c *check.C) {
82 82
 }
83 83
 
84 84
 func (s *DockerSuite) TestInspectTypeFlagContainer(c *check.C) {
85
-
85
+	testRequires(c, DaemonIsLinux)
86 86
 	//Both the container and image are named busybox. docker inspect will fetch container
87 87
 	//JSON State.Running field. If the field is true, it's a container.
88 88
 
... ...
@@ -100,7 +103,7 @@ func (s *DockerSuite) TestInspectTypeFlagContainer(c *check.C) {
100 100
 }
101 101
 
102 102
 func (s *DockerSuite) TestInspectTypeFlagWithNoContainer(c *check.C) {
103
-
103
+	testRequires(c, DaemonIsLinux)
104 104
 	//Run this test on an image named busybox. docker inspect will try to fetch container
105 105
 	//JSON. Since there is no container named busybox and --type=container, docker inspect will
106 106
 	//not try to get the image JSON. It will throw an error.
... ...
@@ -114,7 +117,7 @@ func (s *DockerSuite) TestInspectTypeFlagWithNoContainer(c *check.C) {
114 114
 }
115 115
 
116 116
 func (s *DockerSuite) TestInspectTypeFlagWithImage(c *check.C) {
117
-
117
+	testRequires(c, DaemonIsLinux)
118 118
 	//Both the container and image are named busybox. docker inspect will fetch image
119 119
 	//JSON as --type=image. if there is no image with name busybox, docker inspect
120 120
 	//will throw an error.
... ...
@@ -132,7 +135,7 @@ func (s *DockerSuite) TestInspectTypeFlagWithImage(c *check.C) {
132 132
 }
133 133
 
134 134
 func (s *DockerSuite) TestInspectTypeFlagWithInvalidValue(c *check.C) {
135
-
135
+	testRequires(c, DaemonIsLinux)
136 136
 	//Both the container and image are named busybox. docker inspect will fail
137 137
 	//as --type=foobar is not a valid value for the flag.
138 138
 
... ...
@@ -147,6 +150,7 @@ func (s *DockerSuite) TestInspectTypeFlagWithInvalidValue(c *check.C) {
147 147
 }
148 148
 
149 149
 func (s *DockerSuite) TestInspectImageFilterInt(c *check.C) {
150
+	testRequires(c, DaemonIsLinux)
150 151
 	imageTest := "emptyfs"
151 152
 	out, err := inspectField(imageTest, "Size")
152 153
 	c.Assert(err, check.IsNil)
... ...
@@ -168,6 +172,7 @@ func (s *DockerSuite) TestInspectImageFilterInt(c *check.C) {
168 168
 }
169 169
 
170 170
 func (s *DockerSuite) TestInspectContainerFilterInt(c *check.C) {
171
+	testRequires(c, DaemonIsLinux)
171 172
 	runCmd := exec.Command(dockerBinary, "run", "-i", "-a", "stdin", "busybox", "cat")
172 173
 	runCmd.Stdin = strings.NewReader("blahblah")
173 174
 	out, _, _, err := runCommandWithStdoutStderr(runCmd)
... ...
@@ -194,6 +199,7 @@ func (s *DockerSuite) TestInspectContainerFilterInt(c *check.C) {
194 194
 }
195 195
 
196 196
 func (s *DockerSuite) TestInspectImageGraphDriver(c *check.C) {
197
+	testRequires(c, DaemonIsLinux)
197 198
 	imageTest := "emptyfs"
198 199
 	name, err := inspectField(imageTest, "GraphDriver.Name")
199 200
 	c.Assert(err, check.IsNil)
... ...
@@ -224,6 +230,7 @@ func (s *DockerSuite) TestInspectImageGraphDriver(c *check.C) {
224 224
 }
225 225
 
226 226
 func (s *DockerSuite) TestInspectContainerGraphDriver(c *check.C) {
227
+	testRequires(c, DaemonIsLinux)
227 228
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "true")
228 229
 	out = strings.TrimSpace(out)
229 230
 
... ...
@@ -256,6 +263,7 @@ func (s *DockerSuite) TestInspectContainerGraphDriver(c *check.C) {
256 256
 }
257 257
 
258 258
 func (s *DockerSuite) TestInspectBindMountPoint(c *check.C) {
259
+	testRequires(c, DaemonIsLinux)
259 260
 	dockerCmd(c, "run", "-d", "--name", "test", "-v", "/data:/data:ro,z", "busybox", "cat")
260 261
 
261 262
 	vol, err := inspectFieldJSON("test", "Mounts")
... ...
@@ -298,6 +306,7 @@ func (s *DockerSuite) TestInspectBindMountPoint(c *check.C) {
298 298
 
299 299
 // #14947
300 300
 func (s *DockerSuite) TestInspectTimesAsRFC3339Nano(c *check.C) {
301
+	testRequires(c, DaemonIsLinux)
301 302
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "true")
302 303
 	id := strings.TrimSpace(out)
303 304
 	startedAt, err := inspectField(id, "State.StartedAt")
... ...
@@ -323,6 +332,7 @@ func (s *DockerSuite) TestInspectTimesAsRFC3339Nano(c *check.C) {
323 323
 
324 324
 // #15633
325 325
 func (s *DockerSuite) TestInspectLogConfigNoType(c *check.C) {
326
+	testRequires(c, DaemonIsLinux)
326 327
 	dockerCmd(c, "create", "--name=test", "--log-opt", "max-file=42", "busybox")
327 328
 	var logConfig runconfig.LogConfig
328 329
 
... ...
@@ -9,6 +9,7 @@ import (
9 9
 )
10 10
 
11 11
 func (s *DockerSuite) TestKillContainer(c *check.C) {
12
+	testRequires(c, DaemonIsLinux)
12 13
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
13 14
 	cleanedContainerID := strings.TrimSpace(out)
14 15
 	c.Assert(waitRun(cleanedContainerID), check.IsNil)
... ...
@@ -22,6 +23,7 @@ func (s *DockerSuite) TestKillContainer(c *check.C) {
22 22
 }
23 23
 
24 24
 func (s *DockerSuite) TestKillofStoppedContainer(c *check.C) {
25
+	testRequires(c, DaemonIsLinux)
25 26
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
26 27
 	cleanedContainerID := strings.TrimSpace(out)
27 28
 
... ...
@@ -32,6 +34,7 @@ func (s *DockerSuite) TestKillofStoppedContainer(c *check.C) {
32 32
 }
33 33
 
34 34
 func (s *DockerSuite) TestKillDifferentUserContainer(c *check.C) {
35
+	testRequires(c, DaemonIsLinux)
35 36
 	out, _ := dockerCmd(c, "run", "-u", "daemon", "-d", "busybox", "top")
36 37
 	cleanedContainerID := strings.TrimSpace(out)
37 38
 	c.Assert(waitRun(cleanedContainerID), check.IsNil)
... ...
@@ -46,6 +49,7 @@ func (s *DockerSuite) TestKillDifferentUserContainer(c *check.C) {
46 46
 
47 47
 // regression test about correct signal parsing see #13665
48 48
 func (s *DockerSuite) TestKillWithSignal(c *check.C) {
49
+	testRequires(c, DaemonIsLinux)
49 50
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
50 51
 	cid := strings.TrimSpace(out)
51 52
 	c.Assert(waitRun(cid), check.IsNil)
... ...
@@ -59,6 +63,7 @@ func (s *DockerSuite) TestKillWithSignal(c *check.C) {
59 59
 }
60 60
 
61 61
 func (s *DockerSuite) TestKillWithInvalidSignal(c *check.C) {
62
+	testRequires(c, DaemonIsLinux)
62 63
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
63 64
 	cid := strings.TrimSpace(out)
64 65
 	c.Assert(waitRun(cid), check.IsNil)
... ...
@@ -91,6 +96,7 @@ func (s *DockerSuite) TestKillWithInvalidSignal(c *check.C) {
91 91
 }
92 92
 
93 93
 func (s *DockerSuite) TestKillofStoppedContainerAPIPre120(c *check.C) {
94
+	testRequires(c, DaemonIsLinux)
94 95
 	dockerCmd(c, "run", "--name", "docker-kill-test-api", "-d", "busybox", "top")
95 96
 	dockerCmd(c, "stop", "docker-kill-test-api")
96 97
 
... ...
@@ -9,7 +9,7 @@ import (
9 9
 )
10 10
 
11 11
 func (s *DockerSuite) TestLinksPingUnlinkedContainers(c *check.C) {
12
-
12
+	testRequires(c, DaemonIsLinux)
13 13
 	_, exitCode, err := dockerCmdWithError("run", "--rm", "busybox", "sh", "-c", "ping -c 1 alias1 -W 1 && ping -c 1 alias2 -W 1")
14 14
 
15 15
 	if exitCode == 0 {
... ...
@@ -22,7 +22,7 @@ func (s *DockerSuite) TestLinksPingUnlinkedContainers(c *check.C) {
22 22
 
23 23
 // Test for appropriate error when calling --link with an invalid target container
24 24
 func (s *DockerSuite) TestLinksInvalidContainerTarget(c *check.C) {
25
-
25
+	testRequires(c, DaemonIsLinux)
26 26
 	out, _, err := dockerCmdWithError("run", "--link", "bogus:alias", "busybox", "true")
27 27
 
28 28
 	if err == nil {
... ...
@@ -35,7 +35,7 @@ func (s *DockerSuite) TestLinksInvalidContainerTarget(c *check.C) {
35 35
 }
36 36
 
37 37
 func (s *DockerSuite) TestLinksPingLinkedContainers(c *check.C) {
38
-
38
+	testRequires(c, DaemonIsLinux)
39 39
 	dockerCmd(c, "run", "-d", "--name", "container1", "--hostname", "fred", "busybox", "top")
40 40
 	dockerCmd(c, "run", "-d", "--name", "container2", "--hostname", "wilma", "busybox", "top")
41 41
 
... ...
@@ -53,7 +53,7 @@ func (s *DockerSuite) TestLinksPingLinkedContainers(c *check.C) {
53 53
 }
54 54
 
55 55
 func (s *DockerSuite) TestLinksPingLinkedContainersAfterRename(c *check.C) {
56
-
56
+	testRequires(c, DaemonIsLinux)
57 57
 	out, _ := dockerCmd(c, "run", "-d", "--name", "container1", "busybox", "top")
58 58
 	idA := strings.TrimSpace(out)
59 59
 	out, _ = dockerCmd(c, "run", "-d", "--name", "container2", "busybox", "top")
... ...
@@ -66,6 +66,7 @@ func (s *DockerSuite) TestLinksPingLinkedContainersAfterRename(c *check.C) {
66 66
 }
67 67
 
68 68
 func (s *DockerSuite) TestLinksInspectLinksStarted(c *check.C) {
69
+	testRequires(c, DaemonIsLinux)
69 70
 	var (
70 71
 		expected = map[string]struct{}{"/container1:/testinspectlink/alias1": {}, "/container2:/testinspectlink/alias2": {}}
71 72
 		result   []string
... ...
@@ -93,6 +94,7 @@ func (s *DockerSuite) TestLinksInspectLinksStarted(c *check.C) {
93 93
 }
94 94
 
95 95
 func (s *DockerSuite) TestLinksInspectLinksStopped(c *check.C) {
96
+	testRequires(c, DaemonIsLinux)
96 97
 	var (
97 98
 		expected = map[string]struct{}{"/container1:/testinspectlink/alias1": {}, "/container2:/testinspectlink/alias2": {}}
98 99
 		result   []string
... ...
@@ -121,7 +123,7 @@ func (s *DockerSuite) TestLinksInspectLinksStopped(c *check.C) {
121 121
 }
122 122
 
123 123
 func (s *DockerSuite) TestLinksNotStartedParentNotFail(c *check.C) {
124
-
124
+	testRequires(c, DaemonIsLinux)
125 125
 	dockerCmd(c, "create", "--name=first", "busybox", "top")
126 126
 	dockerCmd(c, "create", "--name=second", "--link=first:first", "busybox", "top")
127 127
 	dockerCmd(c, "start", "first")
... ...
@@ -129,6 +131,7 @@ func (s *DockerSuite) TestLinksNotStartedParentNotFail(c *check.C) {
129 129
 }
130 130
 
131 131
 func (s *DockerSuite) TestLinksHostsFilesInject(c *check.C) {
132
+	testRequires(c, DaemonIsLinux)
132 133
 	testRequires(c, SameHostDaemon, ExecSupport)
133 134
 
134 135
 	out, _ := dockerCmd(c, "run", "-itd", "--name", "one", "busybox", "top")
... ...
@@ -156,6 +159,7 @@ func (s *DockerSuite) TestLinksHostsFilesInject(c *check.C) {
156 156
 }
157 157
 
158 158
 func (s *DockerSuite) TestLinksUpdateOnRestart(c *check.C) {
159
+	testRequires(c, DaemonIsLinux)
159 160
 	testRequires(c, SameHostDaemon, ExecSupport)
160 161
 	dockerCmd(c, "run", "-d", "--name", "one", "busybox", "top")
161 162
 	out, _ := dockerCmd(c, "run", "-d", "--name", "two", "--link", "one:onetwo", "--link", "one:one", "busybox", "top")
... ...
@@ -201,6 +205,7 @@ func (s *DockerSuite) TestLinksUpdateOnRestart(c *check.C) {
201 201
 }
202 202
 
203 203
 func (s *DockerSuite) TestLinksEnvs(c *check.C) {
204
+	testRequires(c, DaemonIsLinux)
204 205
 	dockerCmd(c, "run", "-d", "-e", "e1=", "-e", "e2=v2", "-e", "e3=v3=v3", "--name=first", "busybox", "top")
205 206
 	out, _ := dockerCmd(c, "run", "--name=second", "--link=first:first", "busybox", "env")
206 207
 	if !strings.Contains(out, "FIRST_ENV_e1=\n") ||
... ...
@@ -211,6 +216,7 @@ func (s *DockerSuite) TestLinksEnvs(c *check.C) {
211 211
 }
212 212
 
213 213
 func (s *DockerSuite) TestLinkShortDefinition(c *check.C) {
214
+	testRequires(c, DaemonIsLinux)
214 215
 	out, _ := dockerCmd(c, "run", "-d", "--name", "shortlinkdef", "busybox", "top")
215 216
 
216 217
 	cid := strings.TrimSpace(out)
... ...
@@ -227,6 +233,7 @@ func (s *DockerSuite) TestLinkShortDefinition(c *check.C) {
227 227
 }
228 228
 
229 229
 func (s *DockerSuite) TestLinksNetworkHostContainer(c *check.C) {
230
+	testRequires(c, DaemonIsLinux)
230 231
 	dockerCmd(c, "run", "-d", "--net", "host", "--name", "host_container", "busybox", "top")
231 232
 	out, _, err := dockerCmdWithError("run", "--name", "should_fail", "--link", "host_container:tester", "busybox", "true")
232 233
 	if err == nil || !strings.Contains(out, "--net=host can't be used with links. This would result in undefined behavior") {
... ...
@@ -235,6 +242,7 @@ func (s *DockerSuite) TestLinksNetworkHostContainer(c *check.C) {
235 235
 }
236 236
 
237 237
 func (s *DockerSuite) TestLinksEtcHostsRegularFile(c *check.C) {
238
+	testRequires(c, DaemonIsLinux)
238 239
 	out, _ := dockerCmd(c, "run", "--net=host", "busybox", "ls", "-la", "/etc/hosts")
239 240
 	if !strings.HasPrefix(out, "-") {
240 241
 		c.Errorf("/etc/hosts should be a regular file")
... ...
@@ -16,6 +16,7 @@ import (
16 16
 
17 17
 // This used to work, it test a log of PageSize-1 (gh#4851)
18 18
 func (s *DockerSuite) TestLogsContainerSmallerThanPage(c *check.C) {
19
+	testRequires(c, DaemonIsLinux)
19 20
 	testLen := 32767
20 21
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "sh", "-c", fmt.Sprintf("for i in $(seq 1 %d); do echo -n =; done; echo", testLen))
21 22
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -29,6 +30,7 @@ func (s *DockerSuite) TestLogsContainerSmallerThanPage(c *check.C) {
29 29
 
30 30
 // Regression test: When going over the PageSize, it used to panic (gh#4851)
31 31
 func (s *DockerSuite) TestLogsContainerBiggerThanPage(c *check.C) {
32
+	testRequires(c, DaemonIsLinux)
32 33
 	testLen := 32768
33 34
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "sh", "-c", fmt.Sprintf("for i in $(seq 1 %d); do echo -n =; done; echo", testLen))
34 35
 
... ...
@@ -44,6 +46,7 @@ func (s *DockerSuite) TestLogsContainerBiggerThanPage(c *check.C) {
44 44
 
45 45
 // Regression test: When going much over the PageSize, it used to block (gh#4851)
46 46
 func (s *DockerSuite) TestLogsContainerMuchBiggerThanPage(c *check.C) {
47
+	testRequires(c, DaemonIsLinux)
47 48
 	testLen := 33000
48 49
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "sh", "-c", fmt.Sprintf("for i in $(seq 1 %d); do echo -n =; done; echo", testLen))
49 50
 
... ...
@@ -58,6 +61,7 @@ func (s *DockerSuite) TestLogsContainerMuchBiggerThanPage(c *check.C) {
58 58
 }
59 59
 
60 60
 func (s *DockerSuite) TestLogsTimestamps(c *check.C) {
61
+	testRequires(c, DaemonIsLinux)
61 62
 	testLen := 100
62 63
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "sh", "-c", fmt.Sprintf("for i in $(seq 1 %d); do echo =; done;", testLen))
63 64
 
... ...
@@ -88,6 +92,7 @@ func (s *DockerSuite) TestLogsTimestamps(c *check.C) {
88 88
 }
89 89
 
90 90
 func (s *DockerSuite) TestLogsSeparateStderr(c *check.C) {
91
+	testRequires(c, DaemonIsLinux)
91 92
 	msg := "stderr_log"
92 93
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "sh", "-c", fmt.Sprintf("echo %s 1>&2", msg))
93 94
 
... ...
@@ -107,6 +112,7 @@ func (s *DockerSuite) TestLogsSeparateStderr(c *check.C) {
107 107
 }
108 108
 
109 109
 func (s *DockerSuite) TestLogsStderrInStdout(c *check.C) {
110
+	testRequires(c, DaemonIsLinux)
110 111
 	msg := "stderr_log"
111 112
 	out, _ := dockerCmd(c, "run", "-d", "-t", "busybox", "sh", "-c", fmt.Sprintf("echo %s 1>&2", msg))
112 113
 
... ...
@@ -125,6 +131,7 @@ func (s *DockerSuite) TestLogsStderrInStdout(c *check.C) {
125 125
 }
126 126
 
127 127
 func (s *DockerSuite) TestLogsTail(c *check.C) {
128
+	testRequires(c, DaemonIsLinux)
128 129
 	testLen := 100
129 130
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "sh", "-c", fmt.Sprintf("for i in $(seq 1 %d); do echo =; done;", testLen))
130 131
 
... ...
@@ -155,6 +162,7 @@ func (s *DockerSuite) TestLogsTail(c *check.C) {
155 155
 }
156 156
 
157 157
 func (s *DockerSuite) TestLogsFollowStopped(c *check.C) {
158
+	testRequires(c, DaemonIsLinux)
158 159
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "echo", "hello")
159 160
 
160 161
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -180,6 +188,7 @@ func (s *DockerSuite) TestLogsFollowStopped(c *check.C) {
180 180
 }
181 181
 
182 182
 func (s *DockerSuite) TestLogsSince(c *check.C) {
183
+	testRequires(c, DaemonIsLinux)
183 184
 	name := "testlogssince"
184 185
 	out, _ := dockerCmd(c, "run", "--name="+name, "busybox", "/bin/sh", "-c", "for i in $(seq 1 3); do sleep 2; echo `date +%s` log$i; done")
185 186
 
... ...
@@ -215,6 +224,7 @@ func (s *DockerSuite) TestLogsSince(c *check.C) {
215 215
 }
216 216
 
217 217
 func (s *DockerSuite) TestLogsSinceFutureFollow(c *check.C) {
218
+	testRequires(c, DaemonIsLinux)
218 219
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", `for i in $(seq 1 5); do date +%s; sleep 1; done`)
219 220
 	cleanedContainerID := strings.TrimSpace(out)
220 221
 
... ...
@@ -238,6 +248,7 @@ func (s *DockerSuite) TestLogsSinceFutureFollow(c *check.C) {
238 238
 
239 239
 // Regression test for #8832
240 240
 func (s *DockerSuite) TestLogsFollowSlowStdoutConsumer(c *check.C) {
241
+	testRequires(c, DaemonIsLinux)
241 242
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", `usleep 200000;yes X | head -c 200000`)
242 243
 
243 244
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -271,6 +282,7 @@ func (s *DockerSuite) TestLogsFollowSlowStdoutConsumer(c *check.C) {
271 271
 }
272 272
 
273 273
 func (s *DockerSuite) TestLogsFollowGoroutinesWithStdout(c *check.C) {
274
+	testRequires(c, DaemonIsLinux)
274 275
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "while true; do echo hello; sleep 2; done")
275 276
 	id := strings.TrimSpace(out)
276 277
 	c.Assert(waitRun(id), check.IsNil)
... ...
@@ -322,6 +334,7 @@ func (s *DockerSuite) TestLogsFollowGoroutinesWithStdout(c *check.C) {
322 322
 }
323 323
 
324 324
 func (s *DockerSuite) TestLogsFollowGoroutinesNoOutput(c *check.C) {
325
+	testRequires(c, DaemonIsLinux)
325 326
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "while true; do sleep 2; done")
326 327
 	id := strings.TrimSpace(out)
327 328
 	c.Assert(waitRun(id), check.IsNil)
... ...
@@ -54,6 +54,7 @@ func getContainerStatus(c *check.C, containerID string) string {
54 54
 }
55 55
 
56 56
 func (s *DockerSuite) TestNetworkNat(c *check.C) {
57
+	testRequires(c, DaemonIsLinux)
57 58
 	testRequires(c, SameHostDaemon, NativeExecDriver)
58 59
 	msg := "it works"
59 60
 	startServerContainer(c, msg, 8080)
... ...
@@ -74,6 +75,7 @@ func (s *DockerSuite) TestNetworkNat(c *check.C) {
74 74
 }
75 75
 
76 76
 func (s *DockerSuite) TestNetworkLocalhostTCPNat(c *check.C) {
77
+	testRequires(c, DaemonIsLinux)
77 78
 	testRequires(c, SameHostDaemon, NativeExecDriver)
78 79
 	var (
79 80
 		msg = "hi yall"
... ...
@@ -95,6 +97,7 @@ func (s *DockerSuite) TestNetworkLocalhostTCPNat(c *check.C) {
95 95
 }
96 96
 
97 97
 func (s *DockerSuite) TestNetworkLoopbackNat(c *check.C) {
98
+	testRequires(c, DaemonIsLinux)
98 99
 	testRequires(c, SameHostDaemon, NativeExecDriver)
99 100
 	msg := "it works"
100 101
 	startServerContainer(c, msg, 8080)
... ...
@@ -23,6 +23,7 @@ func checkContains(expected string, out string, c *check.C) {
23 23
 }
24 24
 
25 25
 func (s *DockerSuite) TestNetHostname(c *check.C) {
26
+	testRequires(c, DaemonIsLinux)
26 27
 
27 28
 	var (
28 29
 		out    string
... ...
@@ -80,6 +81,7 @@ func (s *DockerSuite) TestNetHostname(c *check.C) {
80 80
 }
81 81
 
82 82
 func (s *DockerSuite) TestConflictContainerNetworkAndLinks(c *check.C) {
83
+	testRequires(c, DaemonIsLinux)
83 84
 	var (
84 85
 		out    string
85 86
 		err    error
... ...
@@ -100,6 +102,7 @@ func (s *DockerSuite) TestConflictContainerNetworkAndLinks(c *check.C) {
100 100
 }
101 101
 
102 102
 func (s *DockerSuite) TestConflictNetworkModeAndOptions(c *check.C) {
103
+	testRequires(c, DaemonIsLinux)
103 104
 	var (
104 105
 		out    string
105 106
 		err    error
... ...
@@ -8,6 +8,7 @@ import (
8 8
 )
9 9
 
10 10
 func (s *DockerSuite) TestPause(c *check.C) {
11
+	testRequires(c, DaemonIsLinux)
11 12
 	defer unpauseAllContainers()
12 13
 
13 14
 	name := "testeventpause"
... ...
@@ -43,6 +44,7 @@ func (s *DockerSuite) TestPause(c *check.C) {
43 43
 }
44 44
 
45 45
 func (s *DockerSuite) TestPauseMultipleContainers(c *check.C) {
46
+	testRequires(c, DaemonIsLinux)
46 47
 	defer unpauseAllContainers()
47 48
 
48 49
 	containers := []string{
... ...
@@ -11,7 +11,7 @@ import (
11 11
 )
12 12
 
13 13
 func (s *DockerSuite) TestPortList(c *check.C) {
14
-
14
+	testRequires(c, DaemonIsLinux)
15 15
 	// one port
16 16
 	out, _ := dockerCmd(c, "run", "-d", "-p", "9876:80", "busybox", "top")
17 17
 	firstID := strings.TrimSpace(out)
... ...
@@ -181,6 +181,7 @@ func stopRemoveContainer(id string, c *check.C) {
181 181
 }
182 182
 
183 183
 func (s *DockerSuite) TestUnpublishedPortsInPsOutput(c *check.C) {
184
+	testRequires(c, DaemonIsLinux)
184 185
 	// Run busybox with command line expose (equivalent to EXPOSE in image's Dockerfile) for the following ports
185 186
 	port1 := 80
186 187
 	port2 := 443
... ...
@@ -248,6 +249,7 @@ func (s *DockerSuite) TestUnpublishedPortsInPsOutput(c *check.C) {
248 248
 }
249 249
 
250 250
 func (s *DockerSuite) TestPortHostBinding(c *check.C) {
251
+	testRequires(c, DaemonIsLinux)
251 252
 	out, _ := dockerCmd(c, "run", "-d", "-p", "9876:80", "busybox",
252 253
 		"nc", "-l", "-p", "80")
253 254
 	firstID := strings.TrimSpace(out)
... ...
@@ -270,6 +272,7 @@ func (s *DockerSuite) TestPortHostBinding(c *check.C) {
270 270
 }
271 271
 
272 272
 func (s *DockerSuite) TestPortExposeHostBinding(c *check.C) {
273
+	testRequires(c, DaemonIsLinux)
273 274
 	out, _ := dockerCmd(c, "run", "-d", "-P", "--expose", "80", "busybox",
274 275
 		"nc", "-l", "-p", "80")
275 276
 	firstID := strings.TrimSpace(out)
... ...
@@ -9,6 +9,7 @@ import (
9 9
 )
10 10
 
11 11
 func (s *DockerSuite) TestCliProxyDisableProxyUnixSock(c *check.C) {
12
+	testRequires(c, DaemonIsLinux)
12 13
 	testRequires(c, SameHostDaemon) // test is valid when DOCKER_HOST=unix://..
13 14
 
14 15
 	cmd := exec.Command(dockerBinary, "info")
... ...
@@ -18,6 +18,7 @@ import (
18 18
 )
19 19
 
20 20
 func (s *DockerSuite) TestPsListContainersBase(c *check.C) {
21
+	testRequires(c, DaemonIsLinux)
21 22
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
22 23
 	firstID := strings.TrimSpace(out)
23 24
 
... ...
@@ -158,6 +159,7 @@ func assertContainerList(out string, expected []string) bool {
158 158
 }
159 159
 
160 160
 func (s *DockerSuite) TestPsListContainersSize(c *check.C) {
161
+	testRequires(c, DaemonIsLinux)
161 162
 	dockerCmd(c, "run", "-d", "busybox", "echo", "hello")
162 163
 
163 164
 	baseOut, _ := dockerCmd(c, "ps", "-s", "-n=1")
... ...
@@ -210,6 +212,7 @@ func (s *DockerSuite) TestPsListContainersSize(c *check.C) {
210 210
 }
211 211
 
212 212
 func (s *DockerSuite) TestPsListContainersFilterStatus(c *check.C) {
213
+	testRequires(c, DaemonIsLinux)
213 214
 	// FIXME: this should test paused, but it makes things hang and its wonky
214 215
 	// this is because paused containers can't be controlled by signals
215 216
 
... ...
@@ -245,7 +248,7 @@ func (s *DockerSuite) TestPsListContainersFilterStatus(c *check.C) {
245 245
 }
246 246
 
247 247
 func (s *DockerSuite) TestPsListContainersFilterID(c *check.C) {
248
-
248
+	testRequires(c, DaemonIsLinux)
249 249
 	// start container
250 250
 	out, _ := dockerCmd(c, "run", "-d", "busybox")
251 251
 	firstID := strings.TrimSpace(out)
... ...
@@ -263,7 +266,7 @@ func (s *DockerSuite) TestPsListContainersFilterID(c *check.C) {
263 263
 }
264 264
 
265 265
 func (s *DockerSuite) TestPsListContainersFilterName(c *check.C) {
266
-
266
+	testRequires(c, DaemonIsLinux)
267 267
 	// start container
268 268
 	out, _ := dockerCmd(c, "run", "-d", "--name=a_name_to_match", "busybox")
269 269
 	firstID := strings.TrimSpace(out)
... ...
@@ -289,6 +292,7 @@ func (s *DockerSuite) TestPsListContainersFilterName(c *check.C) {
289 289
 // - Run containers for each of those image (busybox, images_ps_filter_test1, images_ps_filter_test2)
290 290
 // - Filter them out :P
291 291
 func (s *DockerSuite) TestPsListContainersFilterAncestorImage(c *check.C) {
292
+	testRequires(c, DaemonIsLinux)
292 293
 	// Build images
293 294
 	imageName1 := "images_ps_filter_test1"
294 295
 	imageID1, err := buildImage(imageName1,
... ...
@@ -388,6 +392,7 @@ func checkPsAncestorFilterOutput(c *check.C, out string, filterName string, expe
388 388
 }
389 389
 
390 390
 func (s *DockerSuite) TestPsListContainersFilterLabel(c *check.C) {
391
+	testRequires(c, DaemonIsLinux)
391 392
 	// start container
392 393
 	out, _ := dockerCmd(c, "run", "-d", "-l", "match=me", "-l", "second=tag", "busybox")
393 394
 	firstID := strings.TrimSpace(out)
... ...
@@ -430,7 +435,7 @@ func (s *DockerSuite) TestPsListContainersFilterLabel(c *check.C) {
430 430
 }
431 431
 
432 432
 func (s *DockerSuite) TestPsListContainersFilterExited(c *check.C) {
433
-
433
+	testRequires(c, DaemonIsLinux)
434 434
 	dockerCmd(c, "run", "-d", "--name", "top", "busybox", "top")
435 435
 
436 436
 	dockerCmd(c, "run", "--name", "zero1", "busybox", "true")
... ...
@@ -490,6 +495,7 @@ func (s *DockerSuite) TestPsListContainersFilterExited(c *check.C) {
490 490
 }
491 491
 
492 492
 func (s *DockerSuite) TestPsRightTagName(c *check.C) {
493
+	testRequires(c, DaemonIsLinux)
493 494
 	tag := "asybox:shmatest"
494 495
 	dockerCmd(c, "tag", "busybox", tag)
495 496
 
... ...
@@ -538,6 +544,7 @@ func (s *DockerSuite) TestPsRightTagName(c *check.C) {
538 538
 }
539 539
 
540 540
 func (s *DockerSuite) TestPsLinkedWithNoTrunc(c *check.C) {
541
+	testRequires(c, DaemonIsLinux)
541 542
 	dockerCmd(c, "run", "--name=first", "-d", "busybox", "top")
542 543
 	dockerCmd(c, "run", "--name=second", "--link=first:first", "-d", "busybox", "top")
543 544
 
... ...
@@ -557,7 +564,7 @@ func (s *DockerSuite) TestPsLinkedWithNoTrunc(c *check.C) {
557 557
 }
558 558
 
559 559
 func (s *DockerSuite) TestPsGroupPortRange(c *check.C) {
560
-
560
+	testRequires(c, DaemonIsLinux)
561 561
 	portRange := "3800-3900"
562 562
 	dockerCmd(c, "run", "-d", "--name", "porttest", "-p", portRange+":"+portRange, "busybox", "top")
563 563
 
... ...
@@ -571,6 +578,7 @@ func (s *DockerSuite) TestPsGroupPortRange(c *check.C) {
571 571
 }
572 572
 
573 573
 func (s *DockerSuite) TestPsWithSize(c *check.C) {
574
+	testRequires(c, DaemonIsLinux)
574 575
 	dockerCmd(c, "run", "-d", "--name", "sizetest", "busybox", "top")
575 576
 
576 577
 	out, _ := dockerCmd(c, "ps", "--size")
... ...
@@ -580,6 +588,7 @@ func (s *DockerSuite) TestPsWithSize(c *check.C) {
580 580
 }
581 581
 
582 582
 func (s *DockerSuite) TestPsListContainersFilterCreated(c *check.C) {
583
+	testRequires(c, DaemonIsLinux)
583 584
 	// create a container
584 585
 	out, _ := dockerCmd(c, "create", "busybox")
585 586
 	cID := strings.TrimSpace(out)
... ...
@@ -618,6 +627,7 @@ func (s *DockerSuite) TestPsListContainersFilterCreated(c *check.C) {
618 618
 }
619 619
 
620 620
 func (s *DockerSuite) TestPsFormatMultiNames(c *check.C) {
621
+	testRequires(c, DaemonIsLinux)
621 622
 	//create 2 containers and link them
622 623
 	dockerCmd(c, "run", "--name=child", "-d", "busybox", "top")
623 624
 	dockerCmd(c, "run", "--name=parent", "--link=child:linkedone", "-d", "busybox", "top")
... ...
@@ -649,6 +659,7 @@ func (s *DockerSuite) TestPsFormatMultiNames(c *check.C) {
649 649
 }
650 650
 
651 651
 func (s *DockerSuite) TestPsFormatHeaders(c *check.C) {
652
+	testRequires(c, DaemonIsLinux)
652 653
 	// make sure no-container "docker ps" still prints the header row
653 654
 	out, _ := dockerCmd(c, "ps", "--format", "table {{.ID}}")
654 655
 	if out != "CONTAINER ID\n" {
... ...
@@ -664,6 +675,7 @@ func (s *DockerSuite) TestPsFormatHeaders(c *check.C) {
664 664
 }
665 665
 
666 666
 func (s *DockerSuite) TestPsDefaultFormatAndQuiet(c *check.C) {
667
+	testRequires(c, DaemonIsLinux)
667 668
 	config := `{
668 669
 		"psFormat": "{{ .ID }} default"
669 670
 }`
... ...
@@ -685,6 +697,7 @@ func (s *DockerSuite) TestPsDefaultFormatAndQuiet(c *check.C) {
685 685
 
686 686
 // Test for GitHub issue #12595
687 687
 func (s *DockerSuite) TestPsImageIDAfterUpdate(c *check.C) {
688
+	testRequires(c, DaemonIsLinux)
688 689
 
689 690
 	originalImageName := "busybox:TestPsImageIDAfterUpdate-original"
690 691
 	updatedImageName := "busybox:TestPsImageIDAfterUpdate-updated"
... ...
@@ -14,6 +14,7 @@ import (
14 14
 // TestPullFromCentralRegistry pulls an image from the central registry and verifies that the client
15 15
 // prints all expected output.
16 16
 func (s *DockerHubPullSuite) TestPullFromCentralRegistry(c *check.C) {
17
+	testRequires(c, DaemonIsLinux)
17 18
 	out := s.Cmd(c, "pull", "hello-world")
18 19
 	defer deleteImages("hello-world")
19 20
 
... ...
@@ -39,6 +40,7 @@ func (s *DockerHubPullSuite) TestPullFromCentralRegistry(c *check.C) {
39 39
 // TestPullNonExistingImage pulls non-existing images from the central registry, with different
40 40
 // combinations of implicit tag and library prefix.
41 41
 func (s *DockerHubPullSuite) TestPullNonExistingImage(c *check.C) {
42
+	testRequires(c, DaemonIsLinux)
42 43
 	for _, e := range []struct {
43 44
 		Image string
44 45
 		Alias string
... ...
@@ -61,6 +63,7 @@ func (s *DockerHubPullSuite) TestPullNonExistingImage(c *check.C) {
61 61
 // reference (tag, repository, central registry url, ...) doesn't trigger a new pull nor leads to
62 62
 // multiple images.
63 63
 func (s *DockerHubPullSuite) TestPullFromCentralRegistryImplicitRefParts(c *check.C) {
64
+	testRequires(c, DaemonIsLinux)
64 65
 	s.Cmd(c, "pull", "hello-world")
65 66
 	defer deleteImages("hello-world")
66 67
 
... ...
@@ -87,6 +90,7 @@ func (s *DockerHubPullSuite) TestPullFromCentralRegistryImplicitRefParts(c *chec
87 87
 
88 88
 // TestPullScratchNotAllowed verifies that pulling 'scratch' is rejected.
89 89
 func (s *DockerHubPullSuite) TestPullScratchNotAllowed(c *check.C) {
90
+	testRequires(c, DaemonIsLinux)
90 91
 	out, err := s.CmdWithError("pull", "scratch")
91 92
 	c.Assert(err, checker.NotNil, check.Commentf("expected pull of scratch to fail"))
92 93
 	c.Assert(out, checker.Contains, "'scratch' is a reserved name")
... ...
@@ -96,6 +100,7 @@ func (s *DockerHubPullSuite) TestPullScratchNotAllowed(c *check.C) {
96 96
 // TestPullAllTagsFromCentralRegistry pulls using `all-tags` for a given image and verifies that it
97 97
 // results in more images than a naked pull.
98 98
 func (s *DockerHubPullSuite) TestPullAllTagsFromCentralRegistry(c *check.C) {
99
+	testRequires(c, DaemonIsLinux)
99 100
 	s.Cmd(c, "pull", "busybox")
100 101
 	outImageCmd := s.Cmd(c, "images", "busybox")
101 102
 	splitOutImageCmd := strings.Split(strings.TrimSpace(outImageCmd), "\n")
... ...
@@ -126,6 +131,7 @@ func (s *DockerHubPullSuite) TestPullAllTagsFromCentralRegistry(c *check.C) {
126 126
 //
127 127
 // Ref: docker/docker#15589
128 128
 func (s *DockerHubPullSuite) TestPullClientDisconnect(c *check.C) {
129
+	testRequires(c, DaemonIsLinux)
129 130
 	repoName := "hello-world:latest"
130 131
 
131 132
 	pullCmd := s.MakeCmd("pull", repoName)
... ...
@@ -8,6 +8,7 @@ import (
8 8
 )
9 9
 
10 10
 func (s *DockerSuite) TestRenameStoppedContainer(c *check.C) {
11
+	testRequires(c, DaemonIsLinux)
11 12
 	out, _ := dockerCmd(c, "run", "--name", "first_name", "-d", "busybox", "sh")
12 13
 
13 14
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -28,6 +29,7 @@ func (s *DockerSuite) TestRenameStoppedContainer(c *check.C) {
28 28
 }
29 29
 
30 30
 func (s *DockerSuite) TestRenameRunningContainer(c *check.C) {
31
+	testRequires(c, DaemonIsLinux)
31 32
 	out, _ := dockerCmd(c, "run", "--name", "first_name", "-d", "busybox", "sh")
32 33
 
33 34
 	newName := "new_name" + stringid.GenerateNonCryptoID()
... ...
@@ -44,6 +46,7 @@ func (s *DockerSuite) TestRenameRunningContainer(c *check.C) {
44 44
 }
45 45
 
46 46
 func (s *DockerSuite) TestRenameCheckNames(c *check.C) {
47
+	testRequires(c, DaemonIsLinux)
47 48
 	dockerCmd(c, "run", "--name", "first_name", "-d", "busybox", "sh")
48 49
 
49 50
 	newName := "new_name" + stringid.GenerateNonCryptoID()
... ...
@@ -64,6 +67,7 @@ func (s *DockerSuite) TestRenameCheckNames(c *check.C) {
64 64
 }
65 65
 
66 66
 func (s *DockerSuite) TestRenameInvalidName(c *check.C) {
67
+	testRequires(c, DaemonIsLinux)
67 68
 	dockerCmd(c, "run", "--name", "myname", "-d", "busybox", "top")
68 69
 
69 70
 	if out, _, err := dockerCmdWithError("rename", "myname", "new:invalid"); err == nil || !strings.Contains(out, "Invalid container name") {
... ...
@@ -7,6 +7,7 @@ import (
7 7
 )
8 8
 
9 9
 func (s *DockerSuite) TestRestartStoppedContainer(c *check.C) {
10
+	testRequires(c, DaemonIsLinux)
10 11
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "echo", "foobar")
11 12
 
12 13
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -26,6 +27,7 @@ func (s *DockerSuite) TestRestartStoppedContainer(c *check.C) {
26 26
 }
27 27
 
28 28
 func (s *DockerSuite) TestRestartRunningContainer(c *check.C) {
29
+	testRequires(c, DaemonIsLinux)
29 30
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "sh", "-c", "echo foobar && sleep 30 && echo 'should not print this'")
30 31
 
31 32
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -50,6 +52,7 @@ func (s *DockerSuite) TestRestartRunningContainer(c *check.C) {
50 50
 
51 51
 // Test that restarting a container with a volume does not create a new volume on restart. Regression test for #819.
52 52
 func (s *DockerSuite) TestRestartWithVolumes(c *check.C) {
53
+	testRequires(c, DaemonIsLinux)
53 54
 	out, _ := dockerCmd(c, "run", "-d", "-v", "/test", "busybox", "top")
54 55
 
55 56
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -78,6 +81,7 @@ func (s *DockerSuite) TestRestartWithVolumes(c *check.C) {
78 78
 }
79 79
 
80 80
 func (s *DockerSuite) TestRestartPolicyNO(c *check.C) {
81
+	testRequires(c, DaemonIsLinux)
81 82
 	out, _ := dockerCmd(c, "run", "-d", "--restart=no", "busybox", "false")
82 83
 
83 84
 	id := strings.TrimSpace(string(out))
... ...
@@ -89,6 +93,7 @@ func (s *DockerSuite) TestRestartPolicyNO(c *check.C) {
89 89
 }
90 90
 
91 91
 func (s *DockerSuite) TestRestartPolicyAlways(c *check.C) {
92
+	testRequires(c, DaemonIsLinux)
92 93
 	out, _ := dockerCmd(c, "run", "-d", "--restart=always", "busybox", "false")
93 94
 
94 95
 	id := strings.TrimSpace(string(out))
... ...
@@ -108,6 +113,7 @@ func (s *DockerSuite) TestRestartPolicyAlways(c *check.C) {
108 108
 }
109 109
 
110 110
 func (s *DockerSuite) TestRestartPolicyOnFailure(c *check.C) {
111
+	testRequires(c, DaemonIsLinux)
111 112
 	out, _ := dockerCmd(c, "run", "-d", "--restart=on-failure:1", "busybox", "false")
112 113
 
113 114
 	id := strings.TrimSpace(string(out))
... ...
@@ -122,6 +128,7 @@ func (s *DockerSuite) TestRestartPolicyOnFailure(c *check.C) {
122 122
 // a good container with --restart=on-failure:3
123 123
 // MaximumRetryCount!=0; RestartCount=0
124 124
 func (s *DockerSuite) TestContainerRestartwithGoodContainer(c *check.C) {
125
+	testRequires(c, DaemonIsLinux)
125 126
 	out, _ := dockerCmd(c, "run", "-d", "--restart=on-failure:3", "busybox", "true")
126 127
 
127 128
 	id := strings.TrimSpace(string(out))
... ...
@@ -8,6 +8,7 @@ import (
8 8
 )
9 9
 
10 10
 func (s *DockerSuite) TestRmContainerWithRemovedVolume(c *check.C) {
11
+	testRequires(c, DaemonIsLinux)
11 12
 	testRequires(c, SameHostDaemon)
12 13
 
13 14
 	dockerCmd(c, "run", "--name", "losemyvolumes", "-v", "/tmp/testing:/test", "busybox", "true")
... ...
@@ -20,12 +21,14 @@ func (s *DockerSuite) TestRmContainerWithRemovedVolume(c *check.C) {
20 20
 }
21 21
 
22 22
 func (s *DockerSuite) TestRmContainerWithVolume(c *check.C) {
23
+	testRequires(c, DaemonIsLinux)
23 24
 	dockerCmd(c, "run", "--name", "foo", "-v", "/srv", "busybox", "true")
24 25
 
25 26
 	dockerCmd(c, "rm", "-v", "foo")
26 27
 }
27 28
 
28 29
 func (s *DockerSuite) TestRmRunningContainer(c *check.C) {
30
+	testRequires(c, DaemonIsLinux)
29 31
 	createRunningContainer(c, "foo")
30 32
 
31 33
 	if _, _, err := dockerCmdWithError("rm", "foo"); err == nil {
... ...
@@ -34,6 +37,7 @@ func (s *DockerSuite) TestRmRunningContainer(c *check.C) {
34 34
 }
35 35
 
36 36
 func (s *DockerSuite) TestRmForceRemoveRunningContainer(c *check.C) {
37
+	testRequires(c, DaemonIsLinux)
37 38
 	createRunningContainer(c, "foo")
38 39
 
39 40
 	// Stop then remove with -s
... ...
@@ -41,7 +45,7 @@ func (s *DockerSuite) TestRmForceRemoveRunningContainer(c *check.C) {
41 41
 }
42 42
 
43 43
 func (s *DockerSuite) TestRmContainerOrphaning(c *check.C) {
44
-
44
+	testRequires(c, DaemonIsLinux)
45 45
 	dockerfile1 := `FROM busybox:latest
46 46
 	ENTRYPOINT ["/bin/true"]`
47 47
 	img := "test-container-orphaning"
... ...
@@ -9,6 +9,7 @@ import (
9 9
 )
10 10
 
11 11
 func (s *DockerSuite) TestRmiWithContainerFails(c *check.C) {
12
+	testRequires(c, DaemonIsLinux)
12 13
 	errSubstr := "is using it"
13 14
 
14 15
 	// create a container
... ...
@@ -36,6 +37,7 @@ func (s *DockerSuite) TestRmiWithContainerFails(c *check.C) {
36 36
 }
37 37
 
38 38
 func (s *DockerSuite) TestRmiTag(c *check.C) {
39
+	testRequires(c, DaemonIsLinux)
39 40
 	imagesBefore, _ := dockerCmd(c, "images", "-a")
40 41
 	dockerCmd(c, "tag", "busybox", "utest:tag1")
41 42
 	dockerCmd(c, "tag", "busybox", "utest/docker:tag2")
... ...
@@ -73,6 +75,7 @@ func (s *DockerSuite) TestRmiTag(c *check.C) {
73 73
 }
74 74
 
75 75
 func (s *DockerSuite) TestRmiImgIDMultipleTag(c *check.C) {
76
+	testRequires(c, DaemonIsLinux)
76 77
 	out, _, err := dockerCmdWithError("run", "-d", "busybox", "/bin/sh", "-c", "mkdir '/busybox-one'")
77 78
 	if err != nil {
78 79
 		c.Fatalf("failed to create a container:%s, %v", out, err)
... ...
@@ -121,6 +124,7 @@ func (s *DockerSuite) TestRmiImgIDMultipleTag(c *check.C) {
121 121
 }
122 122
 
123 123
 func (s *DockerSuite) TestRmiImgIDForce(c *check.C) {
124
+	testRequires(c, DaemonIsLinux)
124 125
 	out, _, err := dockerCmdWithError("run", "-d", "busybox", "/bin/sh", "-c", "mkdir '/busybox-test'")
125 126
 	if err != nil {
126 127
 		c.Fatalf("failed to create a container:%s, %v", out, err)
... ...
@@ -163,6 +167,7 @@ func (s *DockerSuite) TestRmiImgIDForce(c *check.C) {
163 163
 
164 164
 // See https://github.com/docker/docker/issues/14116
165 165
 func (s *DockerSuite) TestRmiImageIDForceWithRunningContainersAndMultipleTags(c *check.C) {
166
+	testRequires(c, DaemonIsLinux)
166 167
 	dockerfile := "FROM busybox\nRUN echo test 14116\n"
167 168
 	imgID, err := buildImage("test-14116", dockerfile, false)
168 169
 	c.Assert(err, check.IsNil)
... ...
@@ -179,6 +184,7 @@ func (s *DockerSuite) TestRmiImageIDForceWithRunningContainersAndMultipleTags(c
179 179
 }
180 180
 
181 181
 func (s *DockerSuite) TestRmiTagWithExistingContainers(c *check.C) {
182
+	testRequires(c, DaemonIsLinux)
182 183
 	container := "test-delete-tag"
183 184
 	newtag := "busybox:newtag"
184 185
 	bb := "busybox:latest"
... ...
@@ -198,6 +204,7 @@ func (s *DockerSuite) TestRmiTagWithExistingContainers(c *check.C) {
198 198
 }
199 199
 
200 200
 func (s *DockerSuite) TestRmiForceWithExistingContainers(c *check.C) {
201
+	testRequires(c, DaemonIsLinux)
201 202
 	image := "busybox-clone"
202 203
 
203 204
 	cmd := exec.Command(dockerBinary, "build", "--no-cache", "-t", image, "-")
... ...
@@ -218,6 +225,7 @@ MAINTAINER foo`)
218 218
 }
219 219
 
220 220
 func (s *DockerSuite) TestRmiWithMultipleRepositories(c *check.C) {
221
+	testRequires(c, DaemonIsLinux)
221 222
 	newRepo := "127.0.0.1:5000/busybox"
222 223
 	oldRepo := "busybox"
223 224
 	newTag := "busybox:test"
... ...
@@ -246,6 +254,7 @@ func (s *DockerSuite) TestRmiWithMultipleRepositories(c *check.C) {
246 246
 }
247 247
 
248 248
 func (s *DockerSuite) TestRmiBlank(c *check.C) {
249
+	testRequires(c, DaemonIsLinux)
249 250
 	// try to delete a blank image name
250 251
 	out, _, err := dockerCmdWithError("rmi", "")
251 252
 	if err == nil {
... ...
@@ -268,6 +277,7 @@ func (s *DockerSuite) TestRmiBlank(c *check.C) {
268 268
 }
269 269
 
270 270
 func (s *DockerSuite) TestRmiContainerImageNotFound(c *check.C) {
271
+	testRequires(c, DaemonIsLinux)
271 272
 	// Build 2 images for testing.
272 273
 	imageNames := []string{"test1", "test2"}
273 274
 	imageIds := make([]string, 2)
... ...
@@ -295,6 +305,7 @@ func (s *DockerSuite) TestRmiContainerImageNotFound(c *check.C) {
295 295
 
296 296
 // #13422
297 297
 func (s *DockerSuite) TestRmiUntagHistoryLayer(c *check.C) {
298
+	testRequires(c, DaemonIsLinux)
298 299
 	image := "tmp1"
299 300
 	// Build a image for testing.
300 301
 	dockerfile := `FROM busybox
... ...
@@ -25,6 +25,7 @@ import (
25 25
 
26 26
 // "test123" should be printed by docker run
27 27
 func (s *DockerSuite) TestRunEchoStdout(c *check.C) {
28
+	testRequires(c, DaemonIsLinux)
28 29
 	out, _ := dockerCmd(c, "run", "busybox", "echo", "test123")
29 30
 	if out != "test123\n" {
30 31
 		c.Fatalf("container should've printed 'test123'")
... ...
@@ -33,6 +34,7 @@ func (s *DockerSuite) TestRunEchoStdout(c *check.C) {
33 33
 
34 34
 // "test" should be printed
35 35
 func (s *DockerSuite) TestRunEchoNamedContainer(c *check.C) {
36
+	testRequires(c, DaemonIsLinux)
36 37
 	out, _ := dockerCmd(c, "run", "--name", "testfoonamedcontainer", "busybox", "echo", "test")
37 38
 	if out != "test\n" {
38 39
 		c.Errorf("container should've printed 'test'")
... ...
@@ -41,6 +43,7 @@ func (s *DockerSuite) TestRunEchoNamedContainer(c *check.C) {
41 41
 
42 42
 // docker run should not leak file descriptors
43 43
 func (s *DockerSuite) TestRunLeakyFileDescriptors(c *check.C) {
44
+	testRequires(c, DaemonIsLinux)
44 45
 	out, _ := dockerCmd(c, "run", "busybox", "ls", "-C", "/proc/self/fd")
45 46
 
46 47
 	// normally, we should only get 0, 1, and 2, but 3 gets created by "ls" when it does "opendir" on the "fd" directory
... ...
@@ -52,6 +55,7 @@ func (s *DockerSuite) TestRunLeakyFileDescriptors(c *check.C) {
52 52
 // it should be possible to lookup Google DNS
53 53
 // this will fail when Internet access is unavailable
54 54
 func (s *DockerSuite) TestRunLookupGoogleDns(c *check.C) {
55
+	testRequires(c, DaemonIsLinux)
55 56
 	testRequires(c, Network)
56 57
 	dockerCmd(c, "run", "busybox", "nslookup", "google.com")
57 58
 }
... ...
@@ -59,12 +63,14 @@ func (s *DockerSuite) TestRunLookupGoogleDns(c *check.C) {
59 59
 // the exit code should be 0
60 60
 // some versions of lxc might make this test fail
61 61
 func (s *DockerSuite) TestRunExitCodeZero(c *check.C) {
62
+	testRequires(c, DaemonIsLinux)
62 63
 	dockerCmd(c, "run", "busybox", "true")
63 64
 }
64 65
 
65 66
 // the exit code should be 1
66 67
 // some versions of lxc might make this test fail
67 68
 func (s *DockerSuite) TestRunExitCodeOne(c *check.C) {
69
+	testRequires(c, DaemonIsLinux)
68 70
 	_, exitCode, err := dockerCmdWithError("run", "busybox", "false")
69 71
 	if err != nil && !strings.Contains("exit status 1", fmt.Sprintf("%s", err)) {
70 72
 		c.Fatal(err)
... ...
@@ -77,6 +83,7 @@ func (s *DockerSuite) TestRunExitCodeOne(c *check.C) {
77 77
 // it should be possible to pipe in data via stdin to a process running in a container
78 78
 // some versions of lxc might make this test fail
79 79
 func (s *DockerSuite) TestRunStdinPipe(c *check.C) {
80
+	testRequires(c, DaemonIsLinux)
80 81
 	runCmd := exec.Command(dockerBinary, "run", "-i", "-a", "stdin", "busybox", "cat")
81 82
 	runCmd.Stdin = strings.NewReader("blahblah")
82 83
 	out, _, _, err := runCommandWithStdoutStderr(runCmd)
... ...
@@ -99,6 +106,7 @@ func (s *DockerSuite) TestRunStdinPipe(c *check.C) {
99 99
 
100 100
 // the container's ID should be printed when starting a container in detached mode
101 101
 func (s *DockerSuite) TestRunDetachedContainerIDPrinting(c *check.C) {
102
+	testRequires(c, DaemonIsLinux)
102 103
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "true")
103 104
 
104 105
 	out = strings.TrimSpace(out)
... ...
@@ -114,6 +122,7 @@ func (s *DockerSuite) TestRunDetachedContainerIDPrinting(c *check.C) {
114 114
 
115 115
 // the working directory should be set correctly
116 116
 func (s *DockerSuite) TestRunWorkingDirectory(c *check.C) {
117
+	testRequires(c, DaemonIsLinux)
117 118
 	out, _ := dockerCmd(c, "run", "-w", "/root", "busybox", "pwd")
118 119
 
119 120
 	out = strings.TrimSpace(out)
... ...
@@ -130,6 +139,7 @@ func (s *DockerSuite) TestRunWorkingDirectory(c *check.C) {
130 130
 
131 131
 // pinging Google's DNS resolver should fail when we disable the networking
132 132
 func (s *DockerSuite) TestRunWithoutNetworking(c *check.C) {
133
+	testRequires(c, DaemonIsLinux)
133 134
 	out, exitCode, err := dockerCmdWithError("run", "--net=none", "busybox", "ping", "-c", "1", "8.8.8.8")
134 135
 	if err != nil && exitCode != 1 {
135 136
 		c.Fatal(out, err)
... ...
@@ -149,6 +159,7 @@ func (s *DockerSuite) TestRunWithoutNetworking(c *check.C) {
149 149
 
150 150
 //test --link use container name to link target
151 151
 func (s *DockerSuite) TestRunLinksContainerWithContainerName(c *check.C) {
152
+	testRequires(c, DaemonIsLinux)
152 153
 	dockerCmd(c, "run", "-i", "-t", "-d", "--name", "parent", "busybox")
153 154
 
154 155
 	ip, err := inspectField("parent", "NetworkSettings.IPAddress")
... ...
@@ -162,6 +173,7 @@ func (s *DockerSuite) TestRunLinksContainerWithContainerName(c *check.C) {
162 162
 
163 163
 //test --link use container id to link target
164 164
 func (s *DockerSuite) TestRunLinksContainerWithContainerId(c *check.C) {
165
+	testRequires(c, DaemonIsLinux)
165 166
 	cID, _ := dockerCmd(c, "run", "-i", "-t", "-d", "busybox")
166 167
 
167 168
 	cID = strings.TrimSpace(cID)
... ...
@@ -176,6 +188,7 @@ func (s *DockerSuite) TestRunLinksContainerWithContainerId(c *check.C) {
176 176
 
177 177
 // Issue 9677.
178 178
 func (s *DockerSuite) TestRunWithDaemonFlags(c *check.C) {
179
+	testRequires(c, DaemonIsLinux)
179 180
 	out, _, err := dockerCmdWithError("--selinux-enabled", "run", "-i", "-t", "busybox", "true")
180 181
 	if err != nil {
181 182
 		if !strings.Contains(out, "must follow the 'docker daemon' command") && // daemon
... ...
@@ -187,6 +200,7 @@ func (s *DockerSuite) TestRunWithDaemonFlags(c *check.C) {
187 187
 
188 188
 // Regression test for #4979
189 189
 func (s *DockerSuite) TestRunWithVolumesFromExited(c *check.C) {
190
+	testRequires(c, DaemonIsLinux)
190 191
 	out, exitCode := dockerCmd(c, "run", "--name", "test-data", "--volume", "/some/dir", "busybox", "touch", "/some/dir/file")
191 192
 	if exitCode != 0 {
192 193
 		c.Fatal("1", out, exitCode)
... ...
@@ -201,6 +215,7 @@ func (s *DockerSuite) TestRunWithVolumesFromExited(c *check.C) {
201 201
 // Volume path is a symlink which also exists on the host, and the host side is a file not a dir
202 202
 // But the volume call is just a normal volume, not a bind mount
203 203
 func (s *DockerSuite) TestRunCreateVolumesInSymlinkDir(c *check.C) {
204
+	testRequires(c, DaemonIsLinux)
204 205
 	testRequires(c, SameHostDaemon)
205 206
 	testRequires(c, NativeExecDriver)
206 207
 	name := "test-volume-symlink"
... ...
@@ -226,12 +241,14 @@ func (s *DockerSuite) TestRunCreateVolumesInSymlinkDir(c *check.C) {
226 226
 }
227 227
 
228 228
 func (s *DockerSuite) TestRunVolumesMountedAsReadonly(c *check.C) {
229
+	testRequires(c, DaemonIsLinux)
229 230
 	if _, code, err := dockerCmdWithError("run", "-v", "/test:/test:ro", "busybox", "touch", "/test/somefile"); err == nil || code == 0 {
230 231
 		c.Fatalf("run should fail because volume is ro: exit code %d", code)
231 232
 	}
232 233
 }
233 234
 
234 235
 func (s *DockerSuite) TestRunVolumesFromInReadonlyMode(c *check.C) {
236
+	testRequires(c, DaemonIsLinux)
235 237
 	dockerCmd(c, "run", "--name", "parent", "-v", "/test", "busybox", "true")
236 238
 
237 239
 	if _, code, err := dockerCmdWithError("run", "--volumes-from", "parent:ro", "busybox", "touch", "/test/file"); err == nil || code == 0 {
... ...
@@ -241,6 +258,7 @@ func (s *DockerSuite) TestRunVolumesFromInReadonlyMode(c *check.C) {
241 241
 
242 242
 // Regression test for #1201
243 243
 func (s *DockerSuite) TestRunVolumesFromInReadWriteMode(c *check.C) {
244
+	testRequires(c, DaemonIsLinux)
244 245
 	dockerCmd(c, "run", "--name", "parent", "-v", "/test", "busybox", "true")
245 246
 	dockerCmd(c, "run", "--volumes-from", "parent:rw", "busybox", "touch", "/test/file")
246 247
 
... ...
@@ -252,6 +270,7 @@ func (s *DockerSuite) TestRunVolumesFromInReadWriteMode(c *check.C) {
252 252
 }
253 253
 
254 254
 func (s *DockerSuite) TestVolumesFromGetsProperMode(c *check.C) {
255
+	testRequires(c, DaemonIsLinux)
255 256
 	dockerCmd(c, "run", "--name", "parent", "-v", "/test:/test:ro", "busybox", "true")
256 257
 
257 258
 	// Expect this "rw" mode to be be ignored since the inherited volume is "ro"
... ...
@@ -269,6 +288,7 @@ func (s *DockerSuite) TestVolumesFromGetsProperMode(c *check.C) {
269 269
 
270 270
 // Test for GH#10618
271 271
 func (s *DockerSuite) TestRunNoDupVolumes(c *check.C) {
272
+	testRequires(c, DaemonIsLinux)
272 273
 	mountstr1 := randomUnixTmpDirPath("test1") + ":/someplace"
273 274
 	mountstr2 := randomUnixTmpDirPath("test2") + ":/someplace"
274 275
 
... ...
@@ -283,11 +303,13 @@ func (s *DockerSuite) TestRunNoDupVolumes(c *check.C) {
283 283
 
284 284
 // Test for #1351
285 285
 func (s *DockerSuite) TestRunApplyVolumesFromBeforeVolumes(c *check.C) {
286
+	testRequires(c, DaemonIsLinux)
286 287
 	dockerCmd(c, "run", "--name", "parent", "-v", "/test", "busybox", "touch", "/test/foo")
287 288
 	dockerCmd(c, "run", "--volumes-from", "parent", "-v", "/test", "busybox", "cat", "/test/foo")
288 289
 }
289 290
 
290 291
 func (s *DockerSuite) TestRunMultipleVolumesFrom(c *check.C) {
292
+	testRequires(c, DaemonIsLinux)
291 293
 	dockerCmd(c, "run", "--name", "parent1", "-v", "/test", "busybox", "touch", "/test/foo")
292 294
 	dockerCmd(c, "run", "--name", "parent2", "-v", "/other", "busybox", "touch", "/other/bar")
293 295
 	dockerCmd(c, "run", "--volumes-from", "parent1", "--volumes-from", "parent2", "busybox", "sh", "-c", "cat /test/foo && cat /other/bar")
... ...
@@ -295,6 +317,7 @@ func (s *DockerSuite) TestRunMultipleVolumesFrom(c *check.C) {
295 295
 
296 296
 // this tests verifies the ID format for the container
297 297
 func (s *DockerSuite) TestRunVerifyContainerID(c *check.C) {
298
+	testRequires(c, DaemonIsLinux)
298 299
 	out, exit, err := dockerCmdWithError("run", "-d", "busybox", "true")
299 300
 	if err != nil {
300 301
 		c.Fatal(err)
... ...
@@ -314,12 +337,14 @@ func (s *DockerSuite) TestRunVerifyContainerID(c *check.C) {
314 314
 
315 315
 // Test that creating a container with a volume doesn't crash. Regression test for #995.
316 316
 func (s *DockerSuite) TestRunCreateVolume(c *check.C) {
317
+	testRequires(c, DaemonIsLinux)
317 318
 	dockerCmd(c, "run", "-v", "/var/lib/data", "busybox", "true")
318 319
 }
319 320
 
320 321
 // Test that creating a volume with a symlink in its path works correctly. Test for #5152.
321 322
 // Note that this bug happens only with symlinks with a target that starts with '/'.
322 323
 func (s *DockerSuite) TestRunCreateVolumeWithSymlink(c *check.C) {
324
+	testRequires(c, DaemonIsLinux)
323 325
 	image := "docker-test-createvolumewithsymlink"
324 326
 
325 327
 	buildCmd := exec.Command(dockerBinary, "build", "-t", image, "-")
... ...
@@ -354,6 +379,7 @@ func (s *DockerSuite) TestRunCreateVolumeWithSymlink(c *check.C) {
354 354
 
355 355
 // Tests that a volume path that has a symlink exists in a container mounting it with `--volumes-from`.
356 356
 func (s *DockerSuite) TestRunVolumesFromSymlinkPath(c *check.C) {
357
+	testRequires(c, DaemonIsLinux)
357 358
 	name := "docker-test-volumesfromsymlinkpath"
358 359
 
359 360
 	buildCmd := exec.Command(dockerBinary, "build", "-t", name, "-")
... ...
@@ -378,6 +404,7 @@ func (s *DockerSuite) TestRunVolumesFromSymlinkPath(c *check.C) {
378 378
 }
379 379
 
380 380
 func (s *DockerSuite) TestRunExitCode(c *check.C) {
381
+	testRequires(c, DaemonIsLinux)
381 382
 	_, exit, err := dockerCmdWithError("run", "busybox", "/bin/sh", "-c", "exit 72")
382 383
 	if err == nil {
383 384
 		c.Fatal("should not have a non nil error")
... ...
@@ -388,6 +415,7 @@ func (s *DockerSuite) TestRunExitCode(c *check.C) {
388 388
 }
389 389
 
390 390
 func (s *DockerSuite) TestRunUserDefaultsToRoot(c *check.C) {
391
+	testRequires(c, DaemonIsLinux)
391 392
 	out, _ := dockerCmd(c, "run", "busybox", "id")
392 393
 	if !strings.Contains(out, "uid=0(root) gid=0(root)") {
393 394
 		c.Fatalf("expected root user got %s", out)
... ...
@@ -395,6 +423,7 @@ func (s *DockerSuite) TestRunUserDefaultsToRoot(c *check.C) {
395 395
 }
396 396
 
397 397
 func (s *DockerSuite) TestRunUserByName(c *check.C) {
398
+	testRequires(c, DaemonIsLinux)
398 399
 	out, _ := dockerCmd(c, "run", "-u", "root", "busybox", "id")
399 400
 	if !strings.Contains(out, "uid=0(root) gid=0(root)") {
400 401
 		c.Fatalf("expected root user got %s", out)
... ...
@@ -402,6 +431,7 @@ func (s *DockerSuite) TestRunUserByName(c *check.C) {
402 402
 }
403 403
 
404 404
 func (s *DockerSuite) TestRunUserByID(c *check.C) {
405
+	testRequires(c, DaemonIsLinux)
405 406
 	out, _ := dockerCmd(c, "run", "-u", "1", "busybox", "id")
406 407
 	if !strings.Contains(out, "uid=1(daemon) gid=1(daemon)") {
407 408
 		c.Fatalf("expected daemon user got %s", out)
... ...
@@ -409,6 +439,7 @@ func (s *DockerSuite) TestRunUserByID(c *check.C) {
409 409
 }
410 410
 
411 411
 func (s *DockerSuite) TestRunUserByIDBig(c *check.C) {
412
+	testRequires(c, DaemonIsLinux)
412 413
 	out, _, err := dockerCmdWithError("run", "-u", "2147483648", "busybox", "id")
413 414
 	if err == nil {
414 415
 		c.Fatal("No error, but must be.", out)
... ...
@@ -419,6 +450,7 @@ func (s *DockerSuite) TestRunUserByIDBig(c *check.C) {
419 419
 }
420 420
 
421 421
 func (s *DockerSuite) TestRunUserByIDNegative(c *check.C) {
422
+	testRequires(c, DaemonIsLinux)
422 423
 	out, _, err := dockerCmdWithError("run", "-u", "-1", "busybox", "id")
423 424
 	if err == nil {
424 425
 		c.Fatal("No error, but must be.", out)
... ...
@@ -429,6 +461,7 @@ func (s *DockerSuite) TestRunUserByIDNegative(c *check.C) {
429 429
 }
430 430
 
431 431
 func (s *DockerSuite) TestRunUserByIDZero(c *check.C) {
432
+	testRequires(c, DaemonIsLinux)
432 433
 	out, _, err := dockerCmdWithError("run", "-u", "0", "busybox", "id")
433 434
 	if err != nil {
434 435
 		c.Fatal(err, out)
... ...
@@ -446,6 +479,7 @@ func (s *DockerSuite) TestRunUserNotFound(c *check.C) {
446 446
 }
447 447
 
448 448
 func (s *DockerSuite) TestRunTwoConcurrentContainers(c *check.C) {
449
+	testRequires(c, DaemonIsLinux)
449 450
 	group := sync.WaitGroup{}
450 451
 	group.Add(2)
451 452
 
... ...
@@ -467,6 +501,7 @@ func (s *DockerSuite) TestRunTwoConcurrentContainers(c *check.C) {
467 467
 }
468 468
 
469 469
 func (s *DockerSuite) TestRunEnvironment(c *check.C) {
470
+	testRequires(c, DaemonIsLinux)
470 471
 	cmd := exec.Command(dockerBinary, "run", "-h", "testing", "-e=FALSE=true", "-e=TRUE", "-e=TRICKY", "-e=HOME=", "busybox", "env")
471 472
 	cmd.Env = append(os.Environ(),
472 473
 		"TRUE=false",
... ...
@@ -509,6 +544,7 @@ func (s *DockerSuite) TestRunEnvironment(c *check.C) {
509 509
 }
510 510
 
511 511
 func (s *DockerSuite) TestRunEnvironmentErase(c *check.C) {
512
+	testRequires(c, DaemonIsLinux)
512 513
 	// Test to make sure that when we use -e on env vars that are
513 514
 	// not set in our local env that they're removed (if present) in
514 515
 	// the container
... ...
@@ -546,6 +582,7 @@ func (s *DockerSuite) TestRunEnvironmentErase(c *check.C) {
546 546
 }
547 547
 
548 548
 func (s *DockerSuite) TestRunEnvironmentOverride(c *check.C) {
549
+	testRequires(c, DaemonIsLinux)
549 550
 	// Test to make sure that when we use -e on env vars that are
550 551
 	// already in the env that we're overriding them
551 552
 
... ...
@@ -583,10 +620,12 @@ func (s *DockerSuite) TestRunEnvironmentOverride(c *check.C) {
583 583
 }
584 584
 
585 585
 func (s *DockerSuite) TestRunContainerNetwork(c *check.C) {
586
+	testRequires(c, DaemonIsLinux)
586 587
 	dockerCmd(c, "run", "busybox", "ping", "-c", "1", "127.0.0.1")
587 588
 }
588 589
 
589 590
 func (s *DockerSuite) TestRunNetHostNotAllowedWithLinks(c *check.C) {
591
+	testRequires(c, DaemonIsLinux)
590 592
 	dockerCmd(c, "run", "--name", "linked", "busybox", "true")
591 593
 
592 594
 	_, _, err := dockerCmdWithError("run", "--net=host", "--link", "linked:linked", "busybox", "true")
... ...
@@ -601,6 +640,7 @@ func (s *DockerSuite) TestRunNetHostNotAllowedWithLinks(c *check.C) {
601 601
 // codepath is executed with "docker run -h <hostname>".  Both were manually
602 602
 // tested, but this testcase takes the simpler path of using "run -h .."
603 603
 func (s *DockerSuite) TestRunFullHostnameSet(c *check.C) {
604
+	testRequires(c, DaemonIsLinux)
604 605
 	out, _ := dockerCmd(c, "run", "-h", "foo.bar.baz", "busybox", "hostname")
605 606
 	if actual := strings.Trim(out, "\r\n"); actual != "foo.bar.baz" {
606 607
 		c.Fatalf("expected hostname 'foo.bar.baz', received %s", actual)
... ...
@@ -608,6 +648,7 @@ func (s *DockerSuite) TestRunFullHostnameSet(c *check.C) {
608 608
 }
609 609
 
610 610
 func (s *DockerSuite) TestRunPrivilegedCanMknod(c *check.C) {
611
+	testRequires(c, DaemonIsLinux)
611 612
 	out, _ := dockerCmd(c, "run", "--privileged", "busybox", "sh", "-c", "mknod /tmp/sda b 8 0 && echo ok")
612 613
 	if actual := strings.Trim(out, "\r\n"); actual != "ok" {
613 614
 		c.Fatalf("expected output ok received %s", actual)
... ...
@@ -615,6 +656,7 @@ func (s *DockerSuite) TestRunPrivilegedCanMknod(c *check.C) {
615 615
 }
616 616
 
617 617
 func (s *DockerSuite) TestRunUnprivilegedCanMknod(c *check.C) {
618
+	testRequires(c, DaemonIsLinux)
618 619
 	out, _ := dockerCmd(c, "run", "busybox", "sh", "-c", "mknod /tmp/sda b 8 0 && echo ok")
619 620
 	if actual := strings.Trim(out, "\r\n"); actual != "ok" {
620 621
 		c.Fatalf("expected output ok received %s", actual)
... ...
@@ -622,6 +664,7 @@ func (s *DockerSuite) TestRunUnprivilegedCanMknod(c *check.C) {
622 622
 }
623 623
 
624 624
 func (s *DockerSuite) TestRunCapDropInvalid(c *check.C) {
625
+	testRequires(c, DaemonIsLinux)
625 626
 	out, _, err := dockerCmdWithError("run", "--cap-drop=CHPASS", "busybox", "ls")
626 627
 	if err == nil {
627 628
 		c.Fatal(err, out)
... ...
@@ -629,6 +672,7 @@ func (s *DockerSuite) TestRunCapDropInvalid(c *check.C) {
629 629
 }
630 630
 
631 631
 func (s *DockerSuite) TestRunCapDropCannotMknod(c *check.C) {
632
+	testRequires(c, DaemonIsLinux)
632 633
 	out, _, err := dockerCmdWithError("run", "--cap-drop=MKNOD", "busybox", "sh", "-c", "mknod /tmp/sda b 8 0 && echo ok")
633 634
 
634 635
 	if err == nil {
... ...
@@ -640,6 +684,7 @@ func (s *DockerSuite) TestRunCapDropCannotMknod(c *check.C) {
640 640
 }
641 641
 
642 642
 func (s *DockerSuite) TestRunCapDropCannotMknodLowerCase(c *check.C) {
643
+	testRequires(c, DaemonIsLinux)
643 644
 	out, _, err := dockerCmdWithError("run", "--cap-drop=mknod", "busybox", "sh", "-c", "mknod /tmp/sda b 8 0 && echo ok")
644 645
 
645 646
 	if err == nil {
... ...
@@ -651,6 +696,7 @@ func (s *DockerSuite) TestRunCapDropCannotMknodLowerCase(c *check.C) {
651 651
 }
652 652
 
653 653
 func (s *DockerSuite) TestRunCapDropALLCannotMknod(c *check.C) {
654
+	testRequires(c, DaemonIsLinux)
654 655
 	out, _, err := dockerCmdWithError("run", "--cap-drop=ALL", "--cap-add=SETGID", "busybox", "sh", "-c", "mknod /tmp/sda b 8 0 && echo ok")
655 656
 	if err == nil {
656 657
 		c.Fatal(err, out)
... ...
@@ -661,6 +707,7 @@ func (s *DockerSuite) TestRunCapDropALLCannotMknod(c *check.C) {
661 661
 }
662 662
 
663 663
 func (s *DockerSuite) TestRunCapDropALLAddMknodCanMknod(c *check.C) {
664
+	testRequires(c, DaemonIsLinux)
664 665
 	out, _ := dockerCmd(c, "run", "--cap-drop=ALL", "--cap-add=MKNOD", "--cap-add=SETGID", "busybox", "sh", "-c", "mknod /tmp/sda b 8 0 && echo ok")
665 666
 
666 667
 	if actual := strings.Trim(out, "\r\n"); actual != "ok" {
... ...
@@ -669,6 +716,7 @@ func (s *DockerSuite) TestRunCapDropALLAddMknodCanMknod(c *check.C) {
669 669
 }
670 670
 
671 671
 func (s *DockerSuite) TestRunCapAddInvalid(c *check.C) {
672
+	testRequires(c, DaemonIsLinux)
672 673
 	out, _, err := dockerCmdWithError("run", "--cap-add=CHPASS", "busybox", "ls")
673 674
 	if err == nil {
674 675
 		c.Fatal(err, out)
... ...
@@ -676,6 +724,7 @@ func (s *DockerSuite) TestRunCapAddInvalid(c *check.C) {
676 676
 }
677 677
 
678 678
 func (s *DockerSuite) TestRunCapAddCanDownInterface(c *check.C) {
679
+	testRequires(c, DaemonIsLinux)
679 680
 	out, _ := dockerCmd(c, "run", "--cap-add=NET_ADMIN", "busybox", "sh", "-c", "ip link set eth0 down && echo ok")
680 681
 
681 682
 	if actual := strings.Trim(out, "\r\n"); actual != "ok" {
... ...
@@ -684,6 +733,7 @@ func (s *DockerSuite) TestRunCapAddCanDownInterface(c *check.C) {
684 684
 }
685 685
 
686 686
 func (s *DockerSuite) TestRunCapAddALLCanDownInterface(c *check.C) {
687
+	testRequires(c, DaemonIsLinux)
687 688
 	out, _ := dockerCmd(c, "run", "--cap-add=ALL", "busybox", "sh", "-c", "ip link set eth0 down && echo ok")
688 689
 
689 690
 	if actual := strings.Trim(out, "\r\n"); actual != "ok" {
... ...
@@ -692,6 +742,7 @@ func (s *DockerSuite) TestRunCapAddALLCanDownInterface(c *check.C) {
692 692
 }
693 693
 
694 694
 func (s *DockerSuite) TestRunCapAddALLDropNetAdminCanDownInterface(c *check.C) {
695
+	testRequires(c, DaemonIsLinux)
695 696
 	out, _, err := dockerCmdWithError("run", "--cap-add=ALL", "--cap-drop=NET_ADMIN", "busybox", "sh", "-c", "ip link set eth0 down && echo ok")
696 697
 	if err == nil {
697 698
 		c.Fatal(err, out)
... ...
@@ -702,6 +753,7 @@ func (s *DockerSuite) TestRunCapAddALLDropNetAdminCanDownInterface(c *check.C) {
702 702
 }
703 703
 
704 704
 func (s *DockerSuite) TestRunGroupAdd(c *check.C) {
705
+	testRequires(c, DaemonIsLinux)
705 706
 	testRequires(c, NativeExecDriver)
706 707
 	out, _ := dockerCmd(c, "run", "--group-add=audio", "--group-add=dbus", "--group-add=777", "busybox", "sh", "-c", "id")
707 708
 
... ...
@@ -712,6 +764,7 @@ func (s *DockerSuite) TestRunGroupAdd(c *check.C) {
712 712
 }
713 713
 
714 714
 func (s *DockerSuite) TestRunPrivilegedCanMount(c *check.C) {
715
+	testRequires(c, DaemonIsLinux)
715 716
 	out, _ := dockerCmd(c, "run", "--privileged", "busybox", "sh", "-c", "mount -t tmpfs none /tmp && echo ok")
716 717
 
717 718
 	if actual := strings.Trim(out, "\r\n"); actual != "ok" {
... ...
@@ -720,6 +773,7 @@ func (s *DockerSuite) TestRunPrivilegedCanMount(c *check.C) {
720 720
 }
721 721
 
722 722
 func (s *DockerSuite) TestRunUnprivilegedCannotMount(c *check.C) {
723
+	testRequires(c, DaemonIsLinux)
723 724
 	out, _, err := dockerCmdWithError("run", "busybox", "sh", "-c", "mount -t tmpfs none /tmp && echo ok")
724 725
 
725 726
 	if err == nil {
... ...
@@ -731,30 +785,35 @@ func (s *DockerSuite) TestRunUnprivilegedCannotMount(c *check.C) {
731 731
 }
732 732
 
733 733
 func (s *DockerSuite) TestRunSysNotWritableInNonPrivilegedContainers(c *check.C) {
734
+	testRequires(c, DaemonIsLinux)
734 735
 	if _, code, err := dockerCmdWithError("run", "busybox", "touch", "/sys/kernel/profiling"); err == nil || code == 0 {
735 736
 		c.Fatal("sys should not be writable in a non privileged container")
736 737
 	}
737 738
 }
738 739
 
739 740
 func (s *DockerSuite) TestRunSysWritableInPrivilegedContainers(c *check.C) {
741
+	testRequires(c, DaemonIsLinux)
740 742
 	if _, code, err := dockerCmdWithError("run", "--privileged", "busybox", "touch", "/sys/kernel/profiling"); err != nil || code != 0 {
741 743
 		c.Fatalf("sys should be writable in privileged container")
742 744
 	}
743 745
 }
744 746
 
745 747
 func (s *DockerSuite) TestRunProcNotWritableInNonPrivilegedContainers(c *check.C) {
748
+	testRequires(c, DaemonIsLinux)
746 749
 	if _, code, err := dockerCmdWithError("run", "busybox", "touch", "/proc/sysrq-trigger"); err == nil || code == 0 {
747 750
 		c.Fatal("proc should not be writable in a non privileged container")
748 751
 	}
749 752
 }
750 753
 
751 754
 func (s *DockerSuite) TestRunProcWritableInPrivilegedContainers(c *check.C) {
755
+	testRequires(c, DaemonIsLinux)
752 756
 	if _, code := dockerCmd(c, "run", "--privileged", "busybox", "touch", "/proc/sysrq-trigger"); code != 0 {
753 757
 		c.Fatalf("proc should be writable in privileged container")
754 758
 	}
755 759
 }
756 760
 
757 761
 func (s *DockerSuite) TestRunDeviceNumbers(c *check.C) {
762
+	testRequires(c, DaemonIsLinux)
758 763
 	out, _ := dockerCmd(c, "run", "busybox", "sh", "-c", "ls -l /dev/null")
759 764
 	deviceLineFields := strings.Fields(out)
760 765
 	deviceLineFields[6] = ""
... ...
@@ -768,6 +827,7 @@ func (s *DockerSuite) TestRunDeviceNumbers(c *check.C) {
768 768
 }
769 769
 
770 770
 func (s *DockerSuite) TestRunThatCharacterDevicesActLikeCharacterDevices(c *check.C) {
771
+	testRequires(c, DaemonIsLinux)
771 772
 	out, _ := dockerCmd(c, "run", "busybox", "sh", "-c", "dd if=/dev/zero of=/zero bs=1k count=5 2> /dev/null ; du -h /zero")
772 773
 	if actual := strings.Trim(out, "\r\n"); actual[0] == '0' {
773 774
 		c.Fatalf("expected a new file called /zero to be create that is greater than 0 bytes long, but du says: %s", actual)
... ...
@@ -775,10 +835,12 @@ func (s *DockerSuite) TestRunThatCharacterDevicesActLikeCharacterDevices(c *chec
775 775
 }
776 776
 
777 777
 func (s *DockerSuite) TestRunUnprivilegedWithChroot(c *check.C) {
778
+	testRequires(c, DaemonIsLinux)
778 779
 	dockerCmd(c, "run", "busybox", "chroot", "/", "true")
779 780
 }
780 781
 
781 782
 func (s *DockerSuite) TestRunAddingOptionalDevices(c *check.C) {
783
+	testRequires(c, DaemonIsLinux)
782 784
 	out, _ := dockerCmd(c, "run", "--device", "/dev/zero:/dev/nulo", "busybox", "sh", "-c", "ls /dev/nulo")
783 785
 	if actual := strings.Trim(out, "\r\n"); actual != "/dev/nulo" {
784 786
 		c.Fatalf("expected output /dev/nulo, received %s", actual)
... ...
@@ -786,6 +848,7 @@ func (s *DockerSuite) TestRunAddingOptionalDevices(c *check.C) {
786 786
 }
787 787
 
788 788
 func (s *DockerSuite) TestRunAddingOptionalDevicesNoSrc(c *check.C) {
789
+	testRequires(c, DaemonIsLinux)
789 790
 	out, _ := dockerCmd(c, "run", "--device", "/dev/zero:rw", "busybox", "sh", "-c", "ls /dev/zero")
790 791
 	if actual := strings.Trim(out, "\r\n"); actual != "/dev/zero" {
791 792
 		c.Fatalf("expected output /dev/zero, received %s", actual)
... ...
@@ -793,6 +856,7 @@ func (s *DockerSuite) TestRunAddingOptionalDevicesNoSrc(c *check.C) {
793 793
 }
794 794
 
795 795
 func (s *DockerSuite) TestRunAddingOptionalDevicesInvalidMode(c *check.C) {
796
+	testRequires(c, DaemonIsLinux)
796 797
 	_, _, err := dockerCmdWithError("run", "--device", "/dev/zero:ro", "busybox", "sh", "-c", "ls /dev/zero")
797 798
 	if err == nil {
798 799
 		c.Fatalf("run container with device mode ro should fail")
... ...
@@ -800,7 +864,7 @@ func (s *DockerSuite) TestRunAddingOptionalDevicesInvalidMode(c *check.C) {
800 800
 }
801 801
 
802 802
 func (s *DockerSuite) TestRunModeHostname(c *check.C) {
803
-	testRequires(c, SameHostDaemon)
803
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
804 804
 
805 805
 	out, _ := dockerCmd(c, "run", "-h=testhostname", "busybox", "cat", "/etc/hostname")
806 806
 
... ...
@@ -820,6 +884,7 @@ func (s *DockerSuite) TestRunModeHostname(c *check.C) {
820 820
 }
821 821
 
822 822
 func (s *DockerSuite) TestRunRootWorkdir(c *check.C) {
823
+	testRequires(c, DaemonIsLinux)
823 824
 	out, _ := dockerCmd(c, "run", "--workdir", "/", "busybox", "pwd")
824 825
 	if out != "/\n" {
825 826
 		c.Fatalf("pwd returned %q (expected /\\n)", s)
... ...
@@ -827,10 +892,12 @@ func (s *DockerSuite) TestRunRootWorkdir(c *check.C) {
827 827
 }
828 828
 
829 829
 func (s *DockerSuite) TestRunAllowBindMountingRoot(c *check.C) {
830
+	testRequires(c, DaemonIsLinux)
830 831
 	dockerCmd(c, "run", "-v", "/:/host", "busybox", "ls", "/host")
831 832
 }
832 833
 
833 834
 func (s *DockerSuite) TestRunDisallowBindMountingRootToRoot(c *check.C) {
835
+	testRequires(c, DaemonIsLinux)
834 836
 	out, _, err := dockerCmdWithError("run", "-v", "/:/", "busybox", "ls", "/host")
835 837
 	if err == nil {
836 838
 		c.Fatal(out, err)
... ...
@@ -839,7 +906,7 @@ func (s *DockerSuite) TestRunDisallowBindMountingRootToRoot(c *check.C) {
839 839
 
840 840
 // Verify that a container gets default DNS when only localhost resolvers exist
841 841
 func (s *DockerSuite) TestRunDnsDefaultOptions(c *check.C) {
842
-	testRequires(c, SameHostDaemon)
842
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
843 843
 
844 844
 	// preserve original resolv.conf for restoring after test
845 845
 	origResolvConf, err := ioutil.ReadFile("/etc/resolv.conf")
... ...
@@ -872,6 +939,7 @@ func (s *DockerSuite) TestRunDnsDefaultOptions(c *check.C) {
872 872
 }
873 873
 
874 874
 func (s *DockerSuite) TestRunDnsOptions(c *check.C) {
875
+	testRequires(c, DaemonIsLinux)
875 876
 	out, stderr, _ := dockerCmdWithStdoutStderr(c, "run", "--dns=127.0.0.1", "--dns-search=mydomain", "busybox", "cat", "/etc/resolv.conf")
876 877
 
877 878
 	// The client will get a warning on stderr when setting DNS to a localhost address; verify this:
... ...
@@ -893,7 +961,7 @@ func (s *DockerSuite) TestRunDnsOptions(c *check.C) {
893 893
 }
894 894
 
895 895
 func (s *DockerSuite) TestRunDnsOptionsBasedOnHostResolvConf(c *check.C) {
896
-	testRequires(c, SameHostDaemon)
896
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
897 897
 
898 898
 	origResolvConf, err := ioutil.ReadFile("/etc/resolv.conf")
899 899
 	if os.IsNotExist(err) {
... ...
@@ -975,7 +1043,7 @@ func (s *DockerSuite) TestRunDnsOptionsBasedOnHostResolvConf(c *check.C) {
975 975
 // Test to see if a non-root user can resolve a DNS name and reach out to it. Also
976 976
 // check if the container resolv.conf file has at least 0644 perm.
977 977
 func (s *DockerSuite) TestRunNonRootUserResolvName(c *check.C) {
978
-	testRequires(c, SameHostDaemon, Network)
978
+	testRequires(c, SameHostDaemon, Network, DaemonIsLinux)
979 979
 
980 980
 	dockerCmd(c, "run", "--name=testperm", "--user=default", "busybox", "ping", "-c", "1", "apt.dockerproject.org")
981 981
 
... ...
@@ -999,7 +1067,7 @@ func (s *DockerSuite) TestRunNonRootUserResolvName(c *check.C) {
999 999
 // if host /etc/resolv.conf has changed. This only applies if the container
1000 1000
 // uses the host's /etc/resolv.conf and does not have any dns options provided.
1001 1001
 func (s *DockerSuite) TestRunResolvconfUpdate(c *check.C) {
1002
-	testRequires(c, SameHostDaemon)
1002
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
1003 1003
 
1004 1004
 	tmpResolvConf := []byte("search pommesfrites.fr\nnameserver 12.34.56.78\n")
1005 1005
 	tmpLocalhostResolvConf := []byte("nameserver 127.0.0.1")
... ...
@@ -1178,6 +1246,7 @@ func (s *DockerSuite) TestRunResolvconfUpdate(c *check.C) {
1178 1178
 }
1179 1179
 
1180 1180
 func (s *DockerSuite) TestRunAddHost(c *check.C) {
1181
+	testRequires(c, DaemonIsLinux)
1181 1182
 	out, _ := dockerCmd(c, "run", "--add-host=extra:86.75.30.9", "busybox", "grep", "extra", "/etc/hosts")
1182 1183
 
1183 1184
 	actual := strings.Trim(out, "\r\n")
... ...
@@ -1188,6 +1257,7 @@ func (s *DockerSuite) TestRunAddHost(c *check.C) {
1188 1188
 
1189 1189
 // Regression test for #6983
1190 1190
 func (s *DockerSuite) TestRunAttachStdErrOnlyTTYMode(c *check.C) {
1191
+	testRequires(c, DaemonIsLinux)
1191 1192
 	_, exitCode := dockerCmd(c, "run", "-t", "-a", "stderr", "busybox", "true")
1192 1193
 	if exitCode != 0 {
1193 1194
 		c.Fatalf("Container should have exited with error code 0")
... ...
@@ -1196,6 +1266,7 @@ func (s *DockerSuite) TestRunAttachStdErrOnlyTTYMode(c *check.C) {
1196 1196
 
1197 1197
 // Regression test for #6983
1198 1198
 func (s *DockerSuite) TestRunAttachStdOutOnlyTTYMode(c *check.C) {
1199
+	testRequires(c, DaemonIsLinux)
1199 1200
 	_, exitCode := dockerCmd(c, "run", "-t", "-a", "stdout", "busybox", "true")
1200 1201
 	if exitCode != 0 {
1201 1202
 		c.Fatalf("Container should have exited with error code 0")
... ...
@@ -1204,6 +1275,7 @@ func (s *DockerSuite) TestRunAttachStdOutOnlyTTYMode(c *check.C) {
1204 1204
 
1205 1205
 // Regression test for #6983
1206 1206
 func (s *DockerSuite) TestRunAttachStdOutAndErrTTYMode(c *check.C) {
1207
+	testRequires(c, DaemonIsLinux)
1207 1208
 	_, exitCode := dockerCmd(c, "run", "-t", "-a", "stdout", "-a", "stderr", "busybox", "true")
1208 1209
 	if exitCode != 0 {
1209 1210
 		c.Fatalf("Container should have exited with error code 0")
... ...
@@ -1213,6 +1285,7 @@ func (s *DockerSuite) TestRunAttachStdOutAndErrTTYMode(c *check.C) {
1213 1213
 // Test for #10388 - this will run the same test as TestRunAttachStdOutAndErrTTYMode
1214 1214
 // but using --attach instead of -a to make sure we read the flag correctly
1215 1215
 func (s *DockerSuite) TestRunAttachWithDetach(c *check.C) {
1216
+	testRequires(c, DaemonIsLinux)
1216 1217
 	cmd := exec.Command(dockerBinary, "run", "-d", "--attach", "stdout", "busybox", "true")
1217 1218
 	_, stderr, _, err := runCommandWithStdoutStderr(cmd)
1218 1219
 	if err == nil {
... ...
@@ -1223,6 +1296,7 @@ func (s *DockerSuite) TestRunAttachWithDetach(c *check.C) {
1223 1223
 }
1224 1224
 
1225 1225
 func (s *DockerSuite) TestRunState(c *check.C) {
1226
+	testRequires(c, DaemonIsLinux)
1226 1227
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
1227 1228
 
1228 1229
 	id := strings.TrimSpace(out)
... ...
@@ -1264,6 +1338,7 @@ func (s *DockerSuite) TestRunState(c *check.C) {
1264 1264
 
1265 1265
 // Test for #1737
1266 1266
 func (s *DockerSuite) TestRunCopyVolumeUidGid(c *check.C) {
1267
+	testRequires(c, DaemonIsLinux)
1267 1268
 	name := "testrunvolumesuidgid"
1268 1269
 	_, err := buildImage(name,
1269 1270
 		`FROM busybox
... ...
@@ -1285,6 +1360,7 @@ func (s *DockerSuite) TestRunCopyVolumeUidGid(c *check.C) {
1285 1285
 
1286 1286
 // Test for #1582
1287 1287
 func (s *DockerSuite) TestRunCopyVolumeContent(c *check.C) {
1288
+	testRequires(c, DaemonIsLinux)
1288 1289
 	name := "testruncopyvolumecontent"
1289 1290
 	_, err := buildImage(name,
1290 1291
 		`FROM busybox
... ...
@@ -1302,6 +1378,7 @@ func (s *DockerSuite) TestRunCopyVolumeContent(c *check.C) {
1302 1302
 }
1303 1303
 
1304 1304
 func (s *DockerSuite) TestRunCleanupCmdOnEntrypoint(c *check.C) {
1305
+	testRequires(c, DaemonIsLinux)
1305 1306
 	name := "testrunmdcleanuponentrypoint"
1306 1307
 	if _, err := buildImage(name,
1307 1308
 		`FROM busybox
... ...
@@ -1323,6 +1400,7 @@ func (s *DockerSuite) TestRunCleanupCmdOnEntrypoint(c *check.C) {
1323 1323
 
1324 1324
 // TestRunWorkdirExistsAndIsFile checks that if 'docker run -w' with existing file can be detected
1325 1325
 func (s *DockerSuite) TestRunWorkdirExistsAndIsFile(c *check.C) {
1326
+	testRequires(c, DaemonIsLinux)
1326 1327
 	out, exit, err := dockerCmdWithError("run", "-w", "/bin/cat", "busybox")
1327 1328
 	if !(err != nil && exit == 1 && strings.Contains(out, "Cannot mkdir: /bin/cat is not a directory")) {
1328 1329
 		c.Fatalf("Docker must complains about making dir, but we got out: %s, exit: %d, err: %s", out, exit, err)
... ...
@@ -1330,6 +1408,7 @@ func (s *DockerSuite) TestRunWorkdirExistsAndIsFile(c *check.C) {
1330 1330
 }
1331 1331
 
1332 1332
 func (s *DockerSuite) TestRunExitOnStdinClose(c *check.C) {
1333
+	testRequires(c, DaemonIsLinux)
1333 1334
 	name := "testrunexitonstdinclose"
1334 1335
 	runCmd := exec.Command(dockerBinary, "run", "--name", name, "-i", "busybox", "/bin/cat")
1335 1336
 
... ...
@@ -1382,6 +1461,7 @@ func (s *DockerSuite) TestRunExitOnStdinClose(c *check.C) {
1382 1382
 
1383 1383
 // Test for #2267
1384 1384
 func (s *DockerSuite) TestRunWriteHostsFileAndNotCommit(c *check.C) {
1385
+	testRequires(c, DaemonIsLinux)
1385 1386
 	name := "writehosts"
1386 1387
 	out, _ := dockerCmd(c, "run", "--name", name, "busybox", "sh", "-c", "echo test2267 >> /etc/hosts && cat /etc/hosts")
1387 1388
 	if !strings.Contains(out, "test2267") {
... ...
@@ -1422,6 +1502,7 @@ func sliceEq(a, b []string) bool {
1422 1422
 
1423 1423
 // Test for #2267
1424 1424
 func (s *DockerSuite) TestRunWriteHostnameFileAndNotCommit(c *check.C) {
1425
+	testRequires(c, DaemonIsLinux)
1425 1426
 	name := "writehostname"
1426 1427
 	out, _ := dockerCmd(c, "run", "--name", name, "busybox", "sh", "-c", "echo test2267 >> /etc/hostname && cat /etc/hostname")
1427 1428
 	if !strings.Contains(out, "test2267") {
... ...
@@ -1436,6 +1517,7 @@ func (s *DockerSuite) TestRunWriteHostnameFileAndNotCommit(c *check.C) {
1436 1436
 
1437 1437
 // Test for #2267
1438 1438
 func (s *DockerSuite) TestRunWriteResolvFileAndNotCommit(c *check.C) {
1439
+	testRequires(c, DaemonIsLinux)
1439 1440
 	name := "writeresolv"
1440 1441
 	out, _ := dockerCmd(c, "run", "--name", name, "busybox", "sh", "-c", "echo test2267 >> /etc/resolv.conf && cat /etc/resolv.conf")
1441 1442
 	if !strings.Contains(out, "test2267") {
... ...
@@ -1449,6 +1531,7 @@ func (s *DockerSuite) TestRunWriteResolvFileAndNotCommit(c *check.C) {
1449 1449
 }
1450 1450
 
1451 1451
 func (s *DockerSuite) TestRunWithBadDevice(c *check.C) {
1452
+	testRequires(c, DaemonIsLinux)
1452 1453
 	name := "baddevice"
1453 1454
 	out, _, err := dockerCmdWithError("run", "--name", name, "--device", "/etc", "busybox", "true")
1454 1455
 
... ...
@@ -1462,6 +1545,7 @@ func (s *DockerSuite) TestRunWithBadDevice(c *check.C) {
1462 1462
 }
1463 1463
 
1464 1464
 func (s *DockerSuite) TestRunEntrypoint(c *check.C) {
1465
+	testRequires(c, DaemonIsLinux)
1465 1466
 	name := "entrypoint"
1466 1467
 	out, _ := dockerCmd(c, "run", "--name", name, "--entrypoint", "/bin/echo", "busybox", "-n", "foobar")
1467 1468
 
... ...
@@ -1472,6 +1556,7 @@ func (s *DockerSuite) TestRunEntrypoint(c *check.C) {
1472 1472
 }
1473 1473
 
1474 1474
 func (s *DockerSuite) TestRunBindMounts(c *check.C) {
1475
+	testRequires(c, DaemonIsLinux)
1475 1476
 	testRequires(c, SameHostDaemon)
1476 1477
 
1477 1478
 	tmpDir, err := ioutil.TempDir("", "docker-test-container")
... ...
@@ -1511,6 +1596,7 @@ func (s *DockerSuite) TestRunBindMounts(c *check.C) {
1511 1511
 // Ensure that CIDFile gets deleted if it's empty
1512 1512
 // Perform this test by making `docker run` fail
1513 1513
 func (s *DockerSuite) TestRunCidFileCleanupIfEmpty(c *check.C) {
1514
+	testRequires(c, DaemonIsLinux)
1514 1515
 	tmpDir, err := ioutil.TempDir("", "TestRunCidFile")
1515 1516
 	if err != nil {
1516 1517
 		c.Fatal(err)
... ...
@@ -1534,6 +1620,7 @@ func (s *DockerSuite) TestRunCidFileCleanupIfEmpty(c *check.C) {
1534 1534
 //sudo docker run --cidfile /tmp/docker_tesc.cid ubuntu echo "test"
1535 1535
 // TestRunCidFile tests that run --cidfile returns the longid
1536 1536
 func (s *DockerSuite) TestRunCidFileCheckIDLength(c *check.C) {
1537
+	testRequires(c, DaemonIsLinux)
1537 1538
 	tmpDir, err := ioutil.TempDir("", "TestRunCidFile")
1538 1539
 	if err != nil {
1539 1540
 		c.Fatal(err)
... ...
@@ -1558,6 +1645,7 @@ func (s *DockerSuite) TestRunCidFileCheckIDLength(c *check.C) {
1558 1558
 }
1559 1559
 
1560 1560
 func (s *DockerSuite) TestRunSetMacAddress(c *check.C) {
1561
+	testRequires(c, DaemonIsLinux)
1561 1562
 	mac := "12:34:56:78:9a:bc"
1562 1563
 
1563 1564
 	out, _ := dockerCmd(c, "run", "-i", "--rm", fmt.Sprintf("--mac-address=%s", mac), "busybox", "/bin/sh", "-c", "ip link show eth0 | tail -1 | awk '{print $2}'")
... ...
@@ -1569,6 +1657,7 @@ func (s *DockerSuite) TestRunSetMacAddress(c *check.C) {
1569 1569
 }
1570 1570
 
1571 1571
 func (s *DockerSuite) TestRunInspectMacAddress(c *check.C) {
1572
+	testRequires(c, DaemonIsLinux)
1572 1573
 	mac := "12:34:56:78:9a:bc"
1573 1574
 	out, _ := dockerCmd(c, "run", "-d", "--mac-address="+mac, "busybox", "top")
1574 1575
 
... ...
@@ -1582,6 +1671,7 @@ func (s *DockerSuite) TestRunInspectMacAddress(c *check.C) {
1582 1582
 
1583 1583
 // test docker run use a invalid mac address
1584 1584
 func (s *DockerSuite) TestRunWithInvalidMacAddress(c *check.C) {
1585
+	testRequires(c, DaemonIsLinux)
1585 1586
 	out, _, err := dockerCmdWithError("run", "--mac-address", "92:d0:c6:0a:29", "busybox")
1586 1587
 	//use a invalid mac address should with a error out
1587 1588
 	if err == nil || !strings.Contains(out, "is not a valid mac address") {
... ...
@@ -1590,7 +1680,7 @@ func (s *DockerSuite) TestRunWithInvalidMacAddress(c *check.C) {
1590 1590
 }
1591 1591
 
1592 1592
 func (s *DockerSuite) TestRunDeallocatePortOnMissingIptablesRule(c *check.C) {
1593
-	testRequires(c, SameHostDaemon)
1593
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
1594 1594
 
1595 1595
 	out, _ := dockerCmd(c, "run", "-d", "-p", "23:23", "busybox", "top")
1596 1596
 
... ...
@@ -1611,7 +1701,7 @@ func (s *DockerSuite) TestRunDeallocatePortOnMissingIptablesRule(c *check.C) {
1611 1611
 }
1612 1612
 
1613 1613
 func (s *DockerSuite) TestRunPortInUse(c *check.C) {
1614
-	testRequires(c, SameHostDaemon)
1614
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
1615 1615
 
1616 1616
 	port := "1234"
1617 1617
 	dockerCmd(c, "run", "-d", "-p", port+":80", "busybox", "top")
... ...
@@ -1627,6 +1717,7 @@ func (s *DockerSuite) TestRunPortInUse(c *check.C) {
1627 1627
 
1628 1628
 // https://github.com/docker/docker/issues/12148
1629 1629
 func (s *DockerSuite) TestRunAllocatePortInReservedRange(c *check.C) {
1630
+	testRequires(c, DaemonIsLinux)
1630 1631
 	// allocate a dynamic port to get the most recent
1631 1632
 	out, _ := dockerCmd(c, "run", "-d", "-P", "-p", "80", "busybox", "top")
1632 1633
 
... ...
@@ -1646,7 +1737,7 @@ func (s *DockerSuite) TestRunAllocatePortInReservedRange(c *check.C) {
1646 1646
 
1647 1647
 // Regression test for #7792
1648 1648
 func (s *DockerSuite) TestRunMountOrdering(c *check.C) {
1649
-	testRequires(c, SameHostDaemon)
1649
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
1650 1650
 
1651 1651
 	tmpDir, err := ioutil.TempDir("", "docker_nested_mount_test")
1652 1652
 	if err != nil {
... ...
@@ -1689,7 +1780,7 @@ func (s *DockerSuite) TestRunMountOrdering(c *check.C) {
1689 1689
 
1690 1690
 // Regression test for https://github.com/docker/docker/issues/8259
1691 1691
 func (s *DockerSuite) TestRunReuseBindVolumeThatIsSymlink(c *check.C) {
1692
-	testRequires(c, SameHostDaemon)
1692
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
1693 1693
 
1694 1694
 	tmpDir, err := ioutil.TempDir(os.TempDir(), "testlink")
1695 1695
 	if err != nil {
... ...
@@ -1713,6 +1804,7 @@ func (s *DockerSuite) TestRunReuseBindVolumeThatIsSymlink(c *check.C) {
1713 1713
 
1714 1714
 //GH#10604: Test an "/etc" volume doesn't overlay special bind mounts in container
1715 1715
 func (s *DockerSuite) TestRunCreateVolumeEtc(c *check.C) {
1716
+	testRequires(c, DaemonIsLinux)
1716 1717
 	out, _ := dockerCmd(c, "run", "--dns=127.0.0.1", "-v", "/etc", "busybox", "cat", "/etc/resolv.conf")
1717 1718
 	if !strings.Contains(out, "nameserver 127.0.0.1") {
1718 1719
 		c.Fatal("/etc volume mount hides /etc/resolv.conf")
... ...
@@ -1731,6 +1823,7 @@ func (s *DockerSuite) TestRunCreateVolumeEtc(c *check.C) {
1731 1731
 }
1732 1732
 
1733 1733
 func (s *DockerSuite) TestVolumesNoCopyData(c *check.C) {
1734
+	testRequires(c, DaemonIsLinux)
1734 1735
 	if _, err := buildImage("dataimage",
1735 1736
 		`FROM busybox
1736 1737
 		RUN mkdir -p /foo
... ...
@@ -1765,6 +1858,7 @@ func (s *DockerSuite) TestRunNoOutputFromPullInStdout(c *check.C) {
1765 1765
 }
1766 1766
 
1767 1767
 func (s *DockerSuite) TestRunVolumesCleanPaths(c *check.C) {
1768
+	testRequires(c, DaemonIsLinux)
1768 1769
 	if _, err := buildImage("run_volumes_clean_paths",
1769 1770
 		`FROM busybox
1770 1771
 		VOLUME /foo/`,
... ...
@@ -1799,6 +1893,7 @@ func (s *DockerSuite) TestRunVolumesCleanPaths(c *check.C) {
1799 1799
 
1800 1800
 // Regression test for #3631
1801 1801
 func (s *DockerSuite) TestRunSlowStdoutConsumer(c *check.C) {
1802
+	testRequires(c, DaemonIsLinux)
1802 1803
 	cont := exec.Command(dockerBinary, "run", "--rm", "busybox", "/bin/sh", "-c", "dd if=/dev/zero of=/dev/stdout bs=1024 count=2000 | catv")
1803 1804
 
1804 1805
 	stdout, err := cont.StdoutPipe()
... ...
@@ -1821,6 +1916,7 @@ func (s *DockerSuite) TestRunSlowStdoutConsumer(c *check.C) {
1821 1821
 }
1822 1822
 
1823 1823
 func (s *DockerSuite) TestRunAllowPortRangeThroughExpose(c *check.C) {
1824
+	testRequires(c, DaemonIsLinux)
1824 1825
 	out, _ := dockerCmd(c, "run", "-d", "--expose", "3000-3003", "-P", "busybox", "top")
1825 1826
 
1826 1827
 	id := strings.TrimSpace(out)
... ...
@@ -1843,6 +1939,7 @@ func (s *DockerSuite) TestRunAllowPortRangeThroughExpose(c *check.C) {
1843 1843
 
1844 1844
 // test docker run expose a invalid port
1845 1845
 func (s *DockerSuite) TestRunExposePort(c *check.C) {
1846
+	testRequires(c, DaemonIsLinux)
1846 1847
 	out, _, err := dockerCmdWithError("run", "--expose", "80000", "busybox")
1847 1848
 	//expose a invalid port should with a error out
1848 1849
 	if err == nil || !strings.Contains(out, "Invalid range format for --expose") {
... ...
@@ -1851,7 +1948,7 @@ func (s *DockerSuite) TestRunExposePort(c *check.C) {
1851 1851
 }
1852 1852
 
1853 1853
 func (s *DockerSuite) TestRunUnknownCommand(c *check.C) {
1854
-	testRequires(c, NativeExecDriver)
1854
+	testRequires(c, NativeExecDriver, DaemonIsLinux)
1855 1855
 	out, _, _ := dockerCmdWithStdoutStderr(c, "create", "busybox", "/bin/nada")
1856 1856
 
1857 1857
 	cID := strings.TrimSpace(out)
... ...
@@ -1866,7 +1963,7 @@ func (s *DockerSuite) TestRunUnknownCommand(c *check.C) {
1866 1866
 }
1867 1867
 
1868 1868
 func (s *DockerSuite) TestRunModeIpcHost(c *check.C) {
1869
-	testRequires(c, SameHostDaemon)
1869
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
1870 1870
 
1871 1871
 	hostIpc, err := os.Readlink("/proc/1/ns/ipc")
1872 1872
 	if err != nil {
... ...
@@ -1887,7 +1984,7 @@ func (s *DockerSuite) TestRunModeIpcHost(c *check.C) {
1887 1887
 }
1888 1888
 
1889 1889
 func (s *DockerSuite) TestRunModeIpcContainer(c *check.C) {
1890
-	testRequires(c, SameHostDaemon)
1890
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
1891 1891
 
1892 1892
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
1893 1893
 
... ...
@@ -1913,6 +2010,7 @@ func (s *DockerSuite) TestRunModeIpcContainer(c *check.C) {
1913 1913
 }
1914 1914
 
1915 1915
 func (s *DockerSuite) TestRunModeIpcContainerNotExists(c *check.C) {
1916
+	testRequires(c, DaemonIsLinux)
1916 1917
 	out, _, err := dockerCmdWithError("run", "-d", "--ipc", "container:abcd1234", "busybox", "top")
1917 1918
 	if !strings.Contains(out, "abcd1234") || err == nil {
1918 1919
 		c.Fatalf("run IPC from a non exists container should with correct error out")
... ...
@@ -1920,7 +2018,7 @@ func (s *DockerSuite) TestRunModeIpcContainerNotExists(c *check.C) {
1920 1920
 }
1921 1921
 
1922 1922
 func (s *DockerSuite) TestRunModeIpcContainerNotRunning(c *check.C) {
1923
-	testRequires(c, SameHostDaemon)
1923
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
1924 1924
 
1925 1925
 	out, _ := dockerCmd(c, "create", "busybox")
1926 1926
 
... ...
@@ -1932,7 +2030,7 @@ func (s *DockerSuite) TestRunModeIpcContainerNotRunning(c *check.C) {
1932 1932
 }
1933 1933
 
1934 1934
 func (s *DockerSuite) TestContainerNetworkMode(c *check.C) {
1935
-	testRequires(c, SameHostDaemon)
1935
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
1936 1936
 
1937 1937
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
1938 1938
 	id := strings.TrimSpace(out)
... ...
@@ -1953,7 +2051,7 @@ func (s *DockerSuite) TestContainerNetworkMode(c *check.C) {
1953 1953
 }
1954 1954
 
1955 1955
 func (s *DockerSuite) TestRunModePidHost(c *check.C) {
1956
-	testRequires(c, NativeExecDriver, SameHostDaemon)
1956
+	testRequires(c, NativeExecDriver, SameHostDaemon, DaemonIsLinux)
1957 1957
 
1958 1958
 	hostPid, err := os.Readlink("/proc/1/ns/pid")
1959 1959
 	if err != nil {
... ...
@@ -1974,7 +2072,7 @@ func (s *DockerSuite) TestRunModePidHost(c *check.C) {
1974 1974
 }
1975 1975
 
1976 1976
 func (s *DockerSuite) TestRunModeUTSHost(c *check.C) {
1977
-	testRequires(c, NativeExecDriver, SameHostDaemon)
1977
+	testRequires(c, NativeExecDriver, SameHostDaemon, DaemonIsLinux)
1978 1978
 
1979 1979
 	hostUTS, err := os.Readlink("/proc/1/ns/uts")
1980 1980
 	if err != nil {
... ...
@@ -1995,6 +2093,7 @@ func (s *DockerSuite) TestRunModeUTSHost(c *check.C) {
1995 1995
 }
1996 1996
 
1997 1997
 func (s *DockerSuite) TestRunTLSverify(c *check.C) {
1998
+	testRequires(c, DaemonIsLinux)
1998 1999
 	if out, code, err := dockerCmdWithError("ps"); err != nil || code != 0 {
1999 2000
 		c.Fatalf("Should have worked: %v:\n%v", err, out)
2000 2001
 	}
... ...
@@ -2013,6 +2112,7 @@ func (s *DockerSuite) TestRunTLSverify(c *check.C) {
2013 2013
 }
2014 2014
 
2015 2015
 func (s *DockerSuite) TestRunPortFromDockerRangeInUse(c *check.C) {
2016
+	testRequires(c, DaemonIsLinux)
2016 2017
 	// first find allocator current position
2017 2018
 	out, _ := dockerCmd(c, "run", "-d", "-p", ":80", "busybox", "top")
2018 2019
 
... ...
@@ -2042,6 +2142,7 @@ func (s *DockerSuite) TestRunPortFromDockerRangeInUse(c *check.C) {
2042 2042
 }
2043 2043
 
2044 2044
 func (s *DockerSuite) TestRunTtyWithPipe(c *check.C) {
2045
+	testRequires(c, DaemonIsLinux)
2045 2046
 	errChan := make(chan error)
2046 2047
 	go func() {
2047 2048
 		defer close(errChan)
... ...
@@ -2071,6 +2172,7 @@ func (s *DockerSuite) TestRunTtyWithPipe(c *check.C) {
2071 2071
 }
2072 2072
 
2073 2073
 func (s *DockerSuite) TestRunNonLocalMacAddress(c *check.C) {
2074
+	testRequires(c, DaemonIsLinux)
2074 2075
 	addr := "00:16:3E:08:00:50"
2075 2076
 
2076 2077
 	if out, _ := dockerCmd(c, "run", "--mac-address", addr, "busybox", "ifconfig"); !strings.Contains(out, addr) {
... ...
@@ -2079,7 +2181,7 @@ func (s *DockerSuite) TestRunNonLocalMacAddress(c *check.C) {
2079 2079
 }
2080 2080
 
2081 2081
 func (s *DockerSuite) TestRunNetHost(c *check.C) {
2082
-	testRequires(c, SameHostDaemon)
2082
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
2083 2083
 
2084 2084
 	hostNet, err := os.Readlink("/proc/1/ns/net")
2085 2085
 	if err != nil {
... ...
@@ -2100,14 +2202,14 @@ func (s *DockerSuite) TestRunNetHost(c *check.C) {
2100 2100
 }
2101 2101
 
2102 2102
 func (s *DockerSuite) TestRunNetHostTwiceSameName(c *check.C) {
2103
-	testRequires(c, SameHostDaemon)
2103
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
2104 2104
 
2105 2105
 	dockerCmd(c, "run", "--rm", "--name=thost", "--net=host", "busybox", "true")
2106 2106
 	dockerCmd(c, "run", "--rm", "--name=thost", "--net=host", "busybox", "true")
2107 2107
 }
2108 2108
 
2109 2109
 func (s *DockerSuite) TestRunNetContainerWhichHost(c *check.C) {
2110
-	testRequires(c, SameHostDaemon)
2110
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
2111 2111
 
2112 2112
 	hostNet, err := os.Readlink("/proc/1/ns/net")
2113 2113
 	if err != nil {
... ...
@@ -2124,6 +2226,7 @@ func (s *DockerSuite) TestRunNetContainerWhichHost(c *check.C) {
2124 2124
 }
2125 2125
 
2126 2126
 func (s *DockerSuite) TestRunAllowPortRangeThroughPublish(c *check.C) {
2127
+	testRequires(c, DaemonIsLinux)
2127 2128
 	out, _ := dockerCmd(c, "run", "-d", "--expose", "3000-3003", "-p", "3000-3003", "busybox", "top")
2128 2129
 
2129 2130
 	id := strings.TrimSpace(out)
... ...
@@ -2144,6 +2247,7 @@ func (s *DockerSuite) TestRunAllowPortRangeThroughPublish(c *check.C) {
2144 2144
 }
2145 2145
 
2146 2146
 func (s *DockerSuite) TestRunSetDefaultRestartPolicy(c *check.C) {
2147
+	testRequires(c, DaemonIsLinux)
2147 2148
 	dockerCmd(c, "run", "-d", "--name", "test", "busybox", "top")
2148 2149
 
2149 2150
 	out, err := inspectField("test", "HostConfig.RestartPolicy.Name")
... ...
@@ -2154,6 +2258,7 @@ func (s *DockerSuite) TestRunSetDefaultRestartPolicy(c *check.C) {
2154 2154
 }
2155 2155
 
2156 2156
 func (s *DockerSuite) TestRunRestartMaxRetries(c *check.C) {
2157
+	testRequires(c, DaemonIsLinux)
2157 2158
 	out, _ := dockerCmd(c, "run", "-d", "--restart=on-failure:3", "busybox", "false")
2158 2159
 
2159 2160
 	id := strings.TrimSpace(string(out))
... ...
@@ -2175,11 +2280,12 @@ func (s *DockerSuite) TestRunRestartMaxRetries(c *check.C) {
2175 2175
 }
2176 2176
 
2177 2177
 func (s *DockerSuite) TestRunContainerWithWritableRootfs(c *check.C) {
2178
+	testRequires(c, DaemonIsLinux)
2178 2179
 	dockerCmd(c, "run", "--rm", "busybox", "touch", "/file")
2179 2180
 }
2180 2181
 
2181 2182
 func (s *DockerSuite) TestRunContainerWithReadonlyRootfs(c *check.C) {
2182
-	testRequires(c, NativeExecDriver)
2183
+	testRequires(c, NativeExecDriver, DaemonIsLinux)
2183 2184
 
2184 2185
 	for _, f := range []string{"/file", "/etc/hosts", "/etc/resolv.conf", "/etc/hostname", "/sys/kernel", "/dev/.dont.touch.me"} {
2185 2186
 		testReadOnlyFile(f, c)
... ...
@@ -2187,6 +2293,7 @@ func (s *DockerSuite) TestRunContainerWithReadonlyRootfs(c *check.C) {
2187 2187
 }
2188 2188
 
2189 2189
 func (s *DockerSuite) TestPermissionsPtsReadonlyRootfs(c *check.C) {
2190
+	testRequires(c, DaemonIsLinux)
2190 2191
 	testRequires(c, NativeExecDriver)
2191 2192
 
2192 2193
 	// Ensure we have not broken writing /dev/pts
... ...
@@ -2201,7 +2308,7 @@ func (s *DockerSuite) TestPermissionsPtsReadonlyRootfs(c *check.C) {
2201 2201
 }
2202 2202
 
2203 2203
 func testReadOnlyFile(filename string, c *check.C) {
2204
-	testRequires(c, NativeExecDriver)
2204
+	testRequires(c, NativeExecDriver, DaemonIsLinux)
2205 2205
 
2206 2206
 	out, _, err := dockerCmdWithError("run", "--read-only", "--rm", "busybox", "touch", filename)
2207 2207
 	if err == nil {
... ...
@@ -2223,7 +2330,7 @@ func testReadOnlyFile(filename string, c *check.C) {
2223 2223
 }
2224 2224
 
2225 2225
 func (s *DockerSuite) TestRunContainerWithReadonlyEtcHostsAndLinkedContainer(c *check.C) {
2226
-	testRequires(c, NativeExecDriver)
2226
+	testRequires(c, NativeExecDriver, DaemonIsLinux)
2227 2227
 
2228 2228
 	dockerCmd(c, "run", "-d", "--name", "test-etc-hosts-ro-linked", "busybox", "top")
2229 2229
 
... ...
@@ -2234,7 +2341,7 @@ func (s *DockerSuite) TestRunContainerWithReadonlyEtcHostsAndLinkedContainer(c *
2234 2234
 }
2235 2235
 
2236 2236
 func (s *DockerSuite) TestRunContainerWithReadonlyRootfsWithDnsFlag(c *check.C) {
2237
-	testRequires(c, NativeExecDriver)
2237
+	testRequires(c, NativeExecDriver, DaemonIsLinux)
2238 2238
 
2239 2239
 	out, _ := dockerCmd(c, "run", "--read-only", "--dns", "1.1.1.1", "busybox", "/bin/cat", "/etc/resolv.conf")
2240 2240
 	if !strings.Contains(string(out), "1.1.1.1") {
... ...
@@ -2243,7 +2350,7 @@ func (s *DockerSuite) TestRunContainerWithReadonlyRootfsWithDnsFlag(c *check.C)
2243 2243
 }
2244 2244
 
2245 2245
 func (s *DockerSuite) TestRunContainerWithReadonlyRootfsWithAddHostFlag(c *check.C) {
2246
-	testRequires(c, NativeExecDriver)
2246
+	testRequires(c, NativeExecDriver, DaemonIsLinux)
2247 2247
 
2248 2248
 	out, _ := dockerCmd(c, "run", "--read-only", "--add-host", "testreadonly:127.0.0.1", "busybox", "/bin/cat", "/etc/hosts")
2249 2249
 	if !strings.Contains(string(out), "testreadonly") {
... ...
@@ -2252,6 +2359,7 @@ func (s *DockerSuite) TestRunContainerWithReadonlyRootfsWithAddHostFlag(c *check
2252 2252
 }
2253 2253
 
2254 2254
 func (s *DockerSuite) TestRunVolumesFromRestartAfterRemoved(c *check.C) {
2255
+	testRequires(c, DaemonIsLinux)
2255 2256
 	dockerCmd(c, "run", "-d", "--name", "voltest", "-v", "/foo", "busybox")
2256 2257
 	dockerCmd(c, "run", "-d", "--name", "restarter", "--volumes-from", "voltest", "busybox", "top")
2257 2258
 
... ...
@@ -2264,6 +2372,7 @@ func (s *DockerSuite) TestRunVolumesFromRestartAfterRemoved(c *check.C) {
2264 2264
 
2265 2265
 // run container with --rm should remove container if exit code != 0
2266 2266
 func (s *DockerSuite) TestRunContainerWithRmFlagExitCodeNotEqualToZero(c *check.C) {
2267
+	testRequires(c, DaemonIsLinux)
2267 2268
 	name := "flowers"
2268 2269
 	out, _, err := dockerCmdWithError("run", "--name", name, "--rm", "busybox", "ls", "/notexists")
2269 2270
 	if err == nil {
... ...
@@ -2281,6 +2390,7 @@ func (s *DockerSuite) TestRunContainerWithRmFlagExitCodeNotEqualToZero(c *check.
2281 2281
 }
2282 2282
 
2283 2283
 func (s *DockerSuite) TestRunContainerWithRmFlagCannotStartContainer(c *check.C) {
2284
+	testRequires(c, DaemonIsLinux)
2284 2285
 	name := "sparkles"
2285 2286
 	out, _, err := dockerCmdWithError("run", "--name", name, "--rm", "busybox", "commandNotFound")
2286 2287
 	if err == nil {
... ...
@@ -2298,6 +2408,7 @@ func (s *DockerSuite) TestRunContainerWithRmFlagCannotStartContainer(c *check.C)
2298 2298
 }
2299 2299
 
2300 2300
 func (s *DockerSuite) TestRunPidHostWithChildIsKillable(c *check.C) {
2301
+	testRequires(c, DaemonIsLinux)
2301 2302
 	name := "ibuildthecloud"
2302 2303
 	dockerCmd(c, "run", "-d", "--pid=host", "--name", name, "busybox", "sh", "-c", "sleep 30; echo hi")
2303 2304
 
... ...
@@ -2319,6 +2430,7 @@ func (s *DockerSuite) TestRunPidHostWithChildIsKillable(c *check.C) {
2319 2319
 }
2320 2320
 
2321 2321
 func (s *DockerSuite) TestRunWithTooSmallMemoryLimit(c *check.C) {
2322
+	testRequires(c, DaemonIsLinux)
2322 2323
 	// this memory limit is 1 byte less than the min, which is 4MB
2323 2324
 	// https://github.com/docker/docker/blob/v1.5.0/daemon/create.go#L22
2324 2325
 	out, _, err := dockerCmdWithError("run", "-m", "4194303", "busybox")
... ...
@@ -2328,6 +2440,7 @@ func (s *DockerSuite) TestRunWithTooSmallMemoryLimit(c *check.C) {
2328 2328
 }
2329 2329
 
2330 2330
 func (s *DockerSuite) TestRunWriteToProcAsound(c *check.C) {
2331
+	testRequires(c, DaemonIsLinux)
2331 2332
 	_, code, err := dockerCmdWithError("run", "busybox", "sh", "-c", "echo 111 >> /proc/asound/version")
2332 2333
 	if err == nil || code == 0 {
2333 2334
 		c.Fatal("standard container should not be able to write to /proc/asound")
... ...
@@ -2335,7 +2448,7 @@ func (s *DockerSuite) TestRunWriteToProcAsound(c *check.C) {
2335 2335
 }
2336 2336
 
2337 2337
 func (s *DockerSuite) TestRunReadProcTimer(c *check.C) {
2338
-	testRequires(c, NativeExecDriver)
2338
+	testRequires(c, NativeExecDriver, DaemonIsLinux)
2339 2339
 	out, code, err := dockerCmdWithError("run", "busybox", "cat", "/proc/timer_stats")
2340 2340
 	if code != 0 {
2341 2341
 		return
... ...
@@ -2349,7 +2462,7 @@ func (s *DockerSuite) TestRunReadProcTimer(c *check.C) {
2349 2349
 }
2350 2350
 
2351 2351
 func (s *DockerSuite) TestRunReadProcLatency(c *check.C) {
2352
-	testRequires(c, NativeExecDriver)
2352
+	testRequires(c, NativeExecDriver, DaemonIsLinux)
2353 2353
 	// some kernels don't have this configured so skip the test if this file is not found
2354 2354
 	// on the host running the tests.
2355 2355
 	if _, err := os.Stat("/proc/latency_stats"); err != nil {
... ...
@@ -2369,7 +2482,7 @@ func (s *DockerSuite) TestRunReadProcLatency(c *check.C) {
2369 2369
 }
2370 2370
 
2371 2371
 func (s *DockerSuite) TestRunReadFilteredProc(c *check.C) {
2372
-	testRequires(c, Apparmor)
2372
+	testRequires(c, Apparmor, DaemonIsLinux)
2373 2373
 
2374 2374
 	testReadPaths := []string{
2375 2375
 		"/proc/latency_stats",
... ...
@@ -2391,6 +2504,7 @@ func (s *DockerSuite) TestRunReadFilteredProc(c *check.C) {
2391 2391
 }
2392 2392
 
2393 2393
 func (s *DockerSuite) TestMountIntoProc(c *check.C) {
2394
+	testRequires(c, DaemonIsLinux)
2394 2395
 	testRequires(c, NativeExecDriver)
2395 2396
 	_, code, err := dockerCmdWithError("run", "-v", "/proc//sys", "busybox", "true")
2396 2397
 	if err == nil || code == 0 {
... ...
@@ -2399,12 +2513,13 @@ func (s *DockerSuite) TestMountIntoProc(c *check.C) {
2399 2399
 }
2400 2400
 
2401 2401
 func (s *DockerSuite) TestMountIntoSys(c *check.C) {
2402
+	testRequires(c, DaemonIsLinux)
2402 2403
 	testRequires(c, NativeExecDriver)
2403 2404
 	dockerCmd(c, "run", "-v", "/sys/fs/cgroup", "busybox", "true")
2404 2405
 }
2405 2406
 
2406 2407
 func (s *DockerSuite) TestRunUnshareProc(c *check.C) {
2407
-	testRequires(c, Apparmor, NativeExecDriver)
2408
+	testRequires(c, Apparmor, NativeExecDriver, DaemonIsLinux)
2408 2409
 
2409 2410
 	name := "acidburn"
2410 2411
 	if out, _, err := dockerCmdWithError("run", "--name", name, "jess/unshare", "unshare", "-p", "-m", "-f", "-r", "--mount-proc=/proc", "mount"); err == nil || !strings.Contains(out, "Permission denied") {
... ...
@@ -2424,6 +2539,7 @@ func (s *DockerSuite) TestRunUnshareProc(c *check.C) {
2424 2424
 }
2425 2425
 
2426 2426
 func (s *DockerSuite) TestRunPublishPort(c *check.C) {
2427
+	testRequires(c, DaemonIsLinux)
2427 2428
 	dockerCmd(c, "run", "-d", "--name", "test", "--expose", "8080", "busybox", "top")
2428 2429
 	out, _ := dockerCmd(c, "port", "test")
2429 2430
 	out = strings.Trim(out, "\r\n")
... ...
@@ -2434,6 +2550,7 @@ func (s *DockerSuite) TestRunPublishPort(c *check.C) {
2434 2434
 
2435 2435
 // Issue #10184.
2436 2436
 func (s *DockerSuite) TestDevicePermissions(c *check.C) {
2437
+	testRequires(c, DaemonIsLinux)
2437 2438
 	testRequires(c, NativeExecDriver)
2438 2439
 	const permissions = "crw-rw-rw-"
2439 2440
 	out, status := dockerCmd(c, "run", "--device", "/dev/fuse:/dev/fuse:mrw", "busybox:latest", "ls", "-l", "/dev/fuse")
... ...
@@ -2446,6 +2563,7 @@ func (s *DockerSuite) TestDevicePermissions(c *check.C) {
2446 2446
 }
2447 2447
 
2448 2448
 func (s *DockerSuite) TestRunCapAddCHOWN(c *check.C) {
2449
+	testRequires(c, DaemonIsLinux)
2449 2450
 	testRequires(c, NativeExecDriver)
2450 2451
 	out, _ := dockerCmd(c, "run", "--cap-drop=ALL", "--cap-add=CHOWN", "busybox", "sh", "-c", "adduser -D -H newuser && chown newuser /home && echo ok")
2451 2452
 
... ...
@@ -2456,6 +2574,7 @@ func (s *DockerSuite) TestRunCapAddCHOWN(c *check.C) {
2456 2456
 
2457 2457
 // https://github.com/docker/docker/pull/14498
2458 2458
 func (s *DockerSuite) TestVolumeFromMixedRWOptions(c *check.C) {
2459
+	testRequires(c, DaemonIsLinux)
2459 2460
 	dockerCmd(c, "run", "--name", "parent", "-v", "/test", "busybox", "true")
2460 2461
 	dockerCmd(c, "run", "--volumes-from", "parent:ro", "--name", "test-volumes-1", "busybox", "true")
2461 2462
 	dockerCmd(c, "run", "--volumes-from", "parent:rw", "--name", "test-volumes-2", "busybox", "true")
... ...
@@ -2474,7 +2593,7 @@ func (s *DockerSuite) TestVolumeFromMixedRWOptions(c *check.C) {
2474 2474
 }
2475 2475
 
2476 2476
 func (s *DockerSuite) TestRunWriteFilteredProc(c *check.C) {
2477
-	testRequires(c, Apparmor, NativeExecDriver)
2477
+	testRequires(c, Apparmor, NativeExecDriver, DaemonIsLinux)
2478 2478
 
2479 2479
 	testWritePaths := []string{
2480 2480
 		/* modprobe and core_pattern should both be denied by generic
... ...
@@ -2500,7 +2619,7 @@ func (s *DockerSuite) TestRunWriteFilteredProc(c *check.C) {
2500 2500
 }
2501 2501
 
2502 2502
 func (s *DockerSuite) TestRunNetworkFilesBindMount(c *check.C) {
2503
-	testRequires(c, SameHostDaemon)
2503
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
2504 2504
 
2505 2505
 	expected := "test123"
2506 2506
 
... ...
@@ -2518,7 +2637,7 @@ func (s *DockerSuite) TestRunNetworkFilesBindMount(c *check.C) {
2518 2518
 }
2519 2519
 
2520 2520
 func (s *DockerSuite) TestRunNetworkFilesBindMountRO(c *check.C) {
2521
-	testRequires(c, SameHostDaemon)
2521
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
2522 2522
 
2523 2523
 	filename := createTmpFile(c, "test123")
2524 2524
 	defer os.Remove(filename)
... ...
@@ -2534,7 +2653,7 @@ func (s *DockerSuite) TestRunNetworkFilesBindMountRO(c *check.C) {
2534 2534
 }
2535 2535
 
2536 2536
 func (s *DockerSuite) TestRunNetworkFilesBindMountROFilesystem(c *check.C) {
2537
-	testRequires(c, SameHostDaemon)
2537
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
2538 2538
 
2539 2539
 	filename := createTmpFile(c, "test123")
2540 2540
 	defer os.Remove(filename)
... ...
@@ -2557,6 +2676,7 @@ func (s *DockerSuite) TestRunNetworkFilesBindMountROFilesystem(c *check.C) {
2557 2557
 }
2558 2558
 
2559 2559
 func (s *DockerTrustSuite) TestTrustedRun(c *check.C) {
2560
+	testRequires(c, DaemonIsLinux)
2560 2561
 	repoName := s.setupTrustedImage(c, "trusted-run")
2561 2562
 
2562 2563
 	// Try run
... ...
@@ -2587,6 +2707,7 @@ func (s *DockerTrustSuite) TestTrustedRun(c *check.C) {
2587 2587
 }
2588 2588
 
2589 2589
 func (s *DockerTrustSuite) TestUntrustedRun(c *check.C) {
2590
+	testRequires(c, DaemonIsLinux)
2590 2591
 	repoName := fmt.Sprintf("%v/dockercli/trusted:latest", privateRegistryURL)
2591 2592
 	// tag the image and upload it to the private registry
2592 2593
 	dockerCmd(c, "tag", "busybox", repoName)
... ...
@@ -2607,6 +2728,7 @@ func (s *DockerTrustSuite) TestUntrustedRun(c *check.C) {
2607 2607
 }
2608 2608
 
2609 2609
 func (s *DockerTrustSuite) TestRunWhenCertExpired(c *check.C) {
2610
+	testRequires(c, DaemonIsLinux)
2610 2611
 	c.Skip("Currently changes system time, causing instability")
2611 2612
 	repoName := s.setupTrustedImage(c, "trusted-run-expired")
2612 2613
 
... ...
@@ -2643,6 +2765,7 @@ func (s *DockerTrustSuite) TestRunWhenCertExpired(c *check.C) {
2643 2643
 }
2644 2644
 
2645 2645
 func (s *DockerTrustSuite) TestTrustedRunFromBadTrustServer(c *check.C) {
2646
+	testRequires(c, DaemonIsLinux)
2646 2647
 	repoName := fmt.Sprintf("%v/dockerclievilrun/trusted:latest", privateRegistryURL)
2647 2648
 	evilLocalConfigDir, err := ioutil.TempDir("", "evil-local-config-dir")
2648 2649
 	if err != nil {
... ...
@@ -2714,6 +2837,7 @@ func (s *DockerTrustSuite) TestTrustedRunFromBadTrustServer(c *check.C) {
2714 2714
 }
2715 2715
 
2716 2716
 func (s *DockerSuite) TestPtraceContainerProcsFromHost(c *check.C) {
2717
+	testRequires(c, DaemonIsLinux)
2717 2718
 	testRequires(c, SameHostDaemon)
2718 2719
 
2719 2720
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
... ...
@@ -2729,7 +2853,7 @@ func (s *DockerSuite) TestPtraceContainerProcsFromHost(c *check.C) {
2729 2729
 }
2730 2730
 
2731 2731
 func (s *DockerSuite) TestAppArmorDeniesPtrace(c *check.C) {
2732
-	testRequires(c, SameHostDaemon, NativeExecDriver, Apparmor)
2732
+	testRequires(c, SameHostDaemon, NativeExecDriver, Apparmor, DaemonIsLinux)
2733 2733
 
2734 2734
 	// Run through 'sh' so we are NOT pid 1. Pid 1 may be able to trace
2735 2735
 	// itself, but pid>1 should not be able to trace pid1.
... ...
@@ -2740,6 +2864,7 @@ func (s *DockerSuite) TestAppArmorDeniesPtrace(c *check.C) {
2740 2740
 }
2741 2741
 
2742 2742
 func (s *DockerSuite) TestAppArmorTraceSelf(c *check.C) {
2743
+	testRequires(c, DaemonIsLinux)
2743 2744
 	testRequires(c, SameHostDaemon)
2744 2745
 	testRequires(c, Apparmor)
2745 2746
 
... ...
@@ -2750,7 +2875,7 @@ func (s *DockerSuite) TestAppArmorTraceSelf(c *check.C) {
2750 2750
 }
2751 2751
 
2752 2752
 func (s *DockerSuite) TestAppArmorDeniesChmodProc(c *check.C) {
2753
-	testRequires(c, SameHostDaemon, NativeExecDriver, Apparmor)
2753
+	testRequires(c, SameHostDaemon, NativeExecDriver, Apparmor, DaemonIsLinux)
2754 2754
 	_, exitCode, _ := dockerCmdWithError("run", "busybox", "chmod", "744", "/proc/cpuinfo")
2755 2755
 	if exitCode == 0 {
2756 2756
 		// If our test failed, attempt to repair the host system...
... ...
@@ -2762,6 +2887,7 @@ func (s *DockerSuite) TestAppArmorDeniesChmodProc(c *check.C) {
2762 2762
 }
2763 2763
 
2764 2764
 func (s *DockerSuite) TestRunCapAddSYSTIME(c *check.C) {
2765
+	testRequires(c, DaemonIsLinux)
2765 2766
 	testRequires(c, NativeExecDriver)
2766 2767
 
2767 2768
 	dockerCmd(c, "run", "--cap-drop=ALL", "--cap-add=SYS_TIME", "busybox", "sh", "-c", "grep ^CapEff /proc/self/status | sed 's/^CapEff:\t//' | grep ^0000000002000000$")
... ...
@@ -2769,6 +2895,7 @@ func (s *DockerSuite) TestRunCapAddSYSTIME(c *check.C) {
2769 2769
 
2770 2770
 // run create container failed should clean up the container
2771 2771
 func (s *DockerSuite) TestRunCreateContainerFailedCleanUp(c *check.C) {
2772
+	testRequires(c, DaemonIsLinux)
2772 2773
 	name := "unique_name"
2773 2774
 	_, _, err := dockerCmdWithError("run", "--name", name, "--link", "nothing:nothing", "busybox")
2774 2775
 	c.Assert(err, check.Not(check.IsNil), check.Commentf("Expected docker run to fail!"))
... ...
@@ -2778,6 +2905,7 @@ func (s *DockerSuite) TestRunCreateContainerFailedCleanUp(c *check.C) {
2778 2778
 }
2779 2779
 
2780 2780
 func (s *DockerSuite) TestRunNamedVolume(c *check.C) {
2781
+	testRequires(c, DaemonIsLinux)
2781 2782
 	dockerCmd(c, "run", "--name=test", "-v", "testing:/foo", "busybox", "sh", "-c", "echo hello > /foo/bar")
2782 2783
 
2783 2784
 	out, _ := dockerCmd(c, "run", "--volumes-from", "test", "busybox", "sh", "-c", "cat /foo/bar")
... ...
@@ -2869,6 +2997,7 @@ func (s *DockerSuite) TestRunContainerWithCgroupMountRO(c *check.C) {
2869 2869
 }
2870 2870
 
2871 2871
 func (s *DockerSuite) TestRunContainerNetworkModeToSelf(c *check.C) {
2872
+	testRequires(c, DaemonIsLinux)
2872 2873
 	out, _, err := dockerCmdWithError("run", "--name=me", "--net=container:me", "busybox", "true")
2873 2874
 	if err == nil || !strings.Contains(out, "cannot join own network") {
2874 2875
 		c.Fatalf("using container net mode to self should result in an error")
... ...
@@ -2876,6 +3005,7 @@ func (s *DockerSuite) TestRunContainerNetworkModeToSelf(c *check.C) {
2876 2876
 }
2877 2877
 
2878 2878
 func (s *DockerSuite) TestRunContainerNetModeWithDnsMacHosts(c *check.C) {
2879
+	testRequires(c, DaemonIsLinux)
2879 2880
 	out, _, err := dockerCmdWithError("run", "-d", "--name", "parent", "busybox", "top")
2880 2881
 	if err != nil {
2881 2882
 		c.Fatalf("failed to run container: %v, output: %q", err, out)
... ...
@@ -2898,6 +3028,7 @@ func (s *DockerSuite) TestRunContainerNetModeWithDnsMacHosts(c *check.C) {
2898 2898
 }
2899 2899
 
2900 2900
 func (s *DockerSuite) TestRunContainerNetModeWithExposePort(c *check.C) {
2901
+	testRequires(c, DaemonIsLinux)
2901 2902
 	dockerCmd(c, "run", "-d", "--name", "parent", "busybox", "top")
2902 2903
 
2903 2904
 	out, _, err := dockerCmdWithError("run", "-p", "5000:5000", "--net=container:parent", "busybox")
... ...
@@ -2917,6 +3048,7 @@ func (s *DockerSuite) TestRunContainerNetModeWithExposePort(c *check.C) {
2917 2917
 }
2918 2918
 
2919 2919
 func (s *DockerSuite) TestRunLinkToContainerNetMode(c *check.C) {
2920
+	testRequires(c, DaemonIsLinux)
2920 2921
 	dockerCmd(c, "run", "--name", "test", "-d", "busybox", "top")
2921 2922
 	dockerCmd(c, "run", "--name", "parent", "-d", "--net=container:test", "busybox", "top")
2922 2923
 	dockerCmd(c, "run", "-d", "--link=parent:parent", "busybox", "top")
... ...
@@ -2925,6 +3057,7 @@ func (s *DockerSuite) TestRunLinkToContainerNetMode(c *check.C) {
2925 2925
 }
2926 2926
 
2927 2927
 func (s *DockerSuite) TestRunLoopbackOnlyExistsWhenNetworkingDisabled(c *check.C) {
2928
+	testRequires(c, DaemonIsLinux)
2928 2929
 	out, _ := dockerCmd(c, "run", "--net=none", "busybox", "ip", "-o", "-4", "a", "show", "up")
2929 2930
 
2930 2931
 	var (
... ...
@@ -2949,11 +3082,12 @@ func (s *DockerSuite) TestRunLoopbackOnlyExistsWhenNetworkingDisabled(c *check.C
2949 2949
 
2950 2950
 // Issue #4681
2951 2951
 func (s *DockerSuite) TestRunLoopbackWhenNetworkDisabled(c *check.C) {
2952
+	testRequires(c, DaemonIsLinux)
2952 2953
 	dockerCmd(c, "run", "--net=none", "busybox", "ping", "-c", "1", "127.0.0.1")
2953 2954
 }
2954 2955
 
2955 2956
 func (s *DockerSuite) TestRunModeNetContainerHostname(c *check.C) {
2956
-	testRequires(c, ExecSupport)
2957
+	testRequires(c, DaemonIsLinux, ExecSupport)
2957 2958
 
2958 2959
 	dockerCmd(c, "run", "-i", "-d", "--name", "parent", "busybox", "top")
2959 2960
 	out, _ := dockerCmd(c, "exec", "parent", "cat", "/etc/hostname")
... ...
@@ -2965,6 +3099,7 @@ func (s *DockerSuite) TestRunModeNetContainerHostname(c *check.C) {
2965 2965
 }
2966 2966
 
2967 2967
 func (s *DockerSuite) TestRunNetworkNotInitializedNoneMode(c *check.C) {
2968
+	testRequires(c, DaemonIsLinux)
2968 2969
 	out, _, err := dockerCmdWithError("run", "-d", "--net=none", "busybox", "top")
2969 2970
 	id := strings.TrimSpace(out)
2970 2971
 	res, err := inspectField(id, "NetworkSettings.IPAddress")
... ...
@@ -2975,6 +3110,7 @@ func (s *DockerSuite) TestRunNetworkNotInitializedNoneMode(c *check.C) {
2975 2975
 }
2976 2976
 
2977 2977
 func (s *DockerSuite) TestTwoContainersInNetHost(c *check.C) {
2978
+	testRequires(c, DaemonIsLinux)
2978 2979
 	dockerCmd(c, "run", "-d", "--net=host", "--name=first", "busybox", "top")
2979 2980
 	dockerCmd(c, "run", "-d", "--net=host", "--name=second", "busybox", "top")
2980 2981
 	dockerCmd(c, "stop", "first")
... ...
@@ -15,6 +15,7 @@ import (
15 15
 
16 16
 // save a repo using gz compression and try to load it using stdout
17 17
 func (s *DockerSuite) TestSaveXzAndLoadRepoStdout(c *check.C) {
18
+	testRequires(c, DaemonIsLinux)
18 19
 	name := "test-save-xz-and-load-repo-stdout"
19 20
 	dockerCmd(c, "run", "--name", name, "busybox", "true")
20 21
 
... ...
@@ -47,6 +48,7 @@ func (s *DockerSuite) TestSaveXzAndLoadRepoStdout(c *check.C) {
47 47
 
48 48
 // save a repo using xz+gz compression and try to load it using stdout
49 49
 func (s *DockerSuite) TestSaveXzGzAndLoadRepoStdout(c *check.C) {
50
+	testRequires(c, DaemonIsLinux)
50 51
 	name := "test-save-xz-gz-and-load-repo-stdout"
51 52
 	dockerCmd(c, "run", "--name", name, "busybox", "true")
52 53
 
... ...
@@ -79,6 +81,7 @@ func (s *DockerSuite) TestSaveXzGzAndLoadRepoStdout(c *check.C) {
79 79
 }
80 80
 
81 81
 func (s *DockerSuite) TestSaveSingleTag(c *check.C) {
82
+	testRequires(c, DaemonIsLinux)
82 83
 	repoName := "foobar-save-single-tag-test"
83 84
 	dockerCmd(c, "tag", "busybox:latest", fmt.Sprintf("%v:latest", repoName))
84 85
 
... ...
@@ -95,6 +98,7 @@ func (s *DockerSuite) TestSaveSingleTag(c *check.C) {
95 95
 }
96 96
 
97 97
 func (s *DockerSuite) TestSaveImageId(c *check.C) {
98
+	testRequires(c, DaemonIsLinux)
98 99
 	repoName := "foobar-save-image-id-test"
99 100
 	dockerCmd(c, "tag", "emptyfs:latest", fmt.Sprintf("%v:latest", repoName))
100 101
 
... ...
@@ -136,6 +140,7 @@ func (s *DockerSuite) TestSaveImageId(c *check.C) {
136 136
 
137 137
 // save a repo and try to load it using flags
138 138
 func (s *DockerSuite) TestSaveAndLoadRepoFlags(c *check.C) {
139
+	testRequires(c, DaemonIsLinux)
139 140
 	name := "test-save-and-load-repo-flags"
140 141
 	dockerCmd(c, "run", "--name", name, "busybox", "true")
141 142
 
... ...
@@ -160,6 +165,7 @@ func (s *DockerSuite) TestSaveAndLoadRepoFlags(c *check.C) {
160 160
 }
161 161
 
162 162
 func (s *DockerSuite) TestSaveMultipleNames(c *check.C) {
163
+	testRequires(c, DaemonIsLinux)
163 164
 	repoName := "foobar-save-multi-name-test"
164 165
 
165 166
 	// Make one image
... ...
@@ -179,7 +185,7 @@ func (s *DockerSuite) TestSaveMultipleNames(c *check.C) {
179 179
 }
180 180
 
181 181
 func (s *DockerSuite) TestSaveRepoWithMultipleImages(c *check.C) {
182
-
182
+	testRequires(c, DaemonIsLinux)
183 183
 	makeImage := func(from string, tag string) string {
184 184
 		var (
185 185
 			out string
... ...
@@ -225,6 +231,7 @@ func (s *DockerSuite) TestSaveRepoWithMultipleImages(c *check.C) {
225 225
 
226 226
 // Issue #6722 #5892 ensure directories are included in changes
227 227
 func (s *DockerSuite) TestSaveDirectoryPermissions(c *check.C) {
228
+	testRequires(c, DaemonIsLinux)
228 229
 	layerEntries := []string{"opt/", "opt/a/", "opt/a/b/", "opt/a/b/c"}
229 230
 	layerEntriesAUFS := []string{"./", ".wh..wh.aufs", ".wh..wh.orph/", ".wh..wh.plnk/", "opt/", "opt/a/", "opt/a/b/", "opt/a/b/c"}
230 231
 
... ...
@@ -8,7 +8,7 @@ import (
8 8
 
9 9
 // search for repos named  "registry" on the central registry
10 10
 func (s *DockerSuite) TestSearchOnCentralRegistry(c *check.C) {
11
-	testRequires(c, Network)
11
+	testRequires(c, Network, DaemonIsLinux)
12 12
 
13 13
 	out, exitCode := dockerCmd(c, "search", "busybox")
14 14
 	if exitCode != 0 {
... ...
@@ -10,6 +10,7 @@ import (
10 10
 
11 11
 // Regression test for https://github.com/docker/docker/issues/7843
12 12
 func (s *DockerSuite) TestStartAttachReturnsOnError(c *check.C) {
13
+	testRequires(c, DaemonIsLinux)
13 14
 	dockerCmd(c, "run", "-d", "--name", "test", "busybox")
14 15
 	dockerCmd(c, "wait", "test")
15 16
 
... ...
@@ -38,6 +39,7 @@ func (s *DockerSuite) TestStartAttachReturnsOnError(c *check.C) {
38 38
 
39 39
 // gh#8555: Exit code should be passed through when using start -a
40 40
 func (s *DockerSuite) TestStartAttachCorrectExitCode(c *check.C) {
41
+	testRequires(c, DaemonIsLinux)
41 42
 	out, _, _ := dockerCmdWithStdoutStderr(c, "run", "-d", "busybox", "sh", "-c", "sleep 2; exit 1")
42 43
 	out = strings.TrimSpace(out)
43 44
 
... ...
@@ -55,6 +57,7 @@ func (s *DockerSuite) TestStartAttachCorrectExitCode(c *check.C) {
55 55
 }
56 56
 
57 57
 func (s *DockerSuite) TestStartAttachSilent(c *check.C) {
58
+	testRequires(c, DaemonIsLinux)
58 59
 	name := "teststartattachcorrectexitcode"
59 60
 	dockerCmd(c, "run", "--name", name, "busybox", "echo", "test")
60 61
 
... ...
@@ -68,7 +71,7 @@ func (s *DockerSuite) TestStartAttachSilent(c *check.C) {
68 68
 }
69 69
 
70 70
 func (s *DockerSuite) TestStartRecordError(c *check.C) {
71
-
71
+	testRequires(c, DaemonIsLinux)
72 72
 	// when container runs successfully, we should not have state.Error
73 73
 	dockerCmd(c, "run", "-d", "-p", "9999:9999", "--name", "test", "busybox", "top")
74 74
 	stateErr, err := inspectField("test", "State.Error")
... ...
@@ -101,6 +104,7 @@ func (s *DockerSuite) TestStartRecordError(c *check.C) {
101 101
 }
102 102
 
103 103
 func (s *DockerSuite) TestStartPausedContainer(c *check.C) {
104
+	testRequires(c, DaemonIsLinux)
104 105
 	defer unpauseAllContainers()
105 106
 
106 107
 	dockerCmd(c, "run", "-d", "--name", "testing", "busybox", "top")
... ...
@@ -113,6 +117,7 @@ func (s *DockerSuite) TestStartPausedContainer(c *check.C) {
113 113
 }
114 114
 
115 115
 func (s *DockerSuite) TestStartMultipleContainers(c *check.C) {
116
+	testRequires(c, DaemonIsLinux)
116 117
 	// run a container named 'parent' and create two container link to `parent`
117 118
 	dockerCmd(c, "run", "-d", "--name", "parent", "busybox", "top")
118 119
 
... ...
@@ -147,6 +152,7 @@ func (s *DockerSuite) TestStartMultipleContainers(c *check.C) {
147 147
 }
148 148
 
149 149
 func (s *DockerSuite) TestStartAttachMultipleContainers(c *check.C) {
150
+	testRequires(c, DaemonIsLinux)
150 151
 	// run  multiple containers to test
151 152
 	for _, container := range []string{"test1", "test2", "test3"} {
152 153
 		dockerCmd(c, "run", "-d", "--name", container, "busybox", "top")
... ...
@@ -9,6 +9,7 @@ import (
9 9
 )
10 10
 
11 11
 func (s *DockerSuite) TestCliStatsNoStream(c *check.C) {
12
+	testRequires(c, DaemonIsLinux)
12 13
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
13 14
 	id := strings.TrimSpace(out)
14 15
 	c.Assert(waitRun(id), check.IsNil)
... ...
@@ -9,6 +9,7 @@ import (
9 9
 
10 10
 // tagging a named image in a new unprefixed repo should work
11 11
 func (s *DockerSuite) TestTagUnprefixedRepoByName(c *check.C) {
12
+	testRequires(c, DaemonIsLinux)
12 13
 	if err := pullImageIfNotExist("busybox:latest"); err != nil {
13 14
 		c.Fatal("couldn't find the busybox:latest image locally and failed to pull it")
14 15
 	}
... ...
@@ -18,6 +19,7 @@ func (s *DockerSuite) TestTagUnprefixedRepoByName(c *check.C) {
18 18
 
19 19
 // tagging an image by ID in a new unprefixed repo should work
20 20
 func (s *DockerSuite) TestTagUnprefixedRepoByID(c *check.C) {
21
+	testRequires(c, DaemonIsLinux)
21 22
 	imageID, err := inspectField("busybox", "Id")
22 23
 	c.Assert(err, check.IsNil)
23 24
 	dockerCmd(c, "tag", imageID, "testfoobarbaz")
... ...
@@ -52,6 +54,7 @@ func (s *DockerSuite) TestTagInvalidPrefixedRepo(c *check.C) {
52 52
 
53 53
 // ensure we allow the use of valid tags
54 54
 func (s *DockerSuite) TestTagValidPrefixedRepo(c *check.C) {
55
+	testRequires(c, DaemonIsLinux)
55 56
 	if err := pullImageIfNotExist("busybox:latest"); err != nil {
56 57
 		c.Fatal("couldn't find the busybox:latest image locally and failed to pull it")
57 58
 	}
... ...
@@ -70,6 +73,7 @@ func (s *DockerSuite) TestTagValidPrefixedRepo(c *check.C) {
70 70
 
71 71
 // tag an image with an existed tag name without -f option should fail
72 72
 func (s *DockerSuite) TestTagExistedNameWithoutForce(c *check.C) {
73
+	testRequires(c, DaemonIsLinux)
73 74
 	if err := pullImageIfNotExist("busybox:latest"); err != nil {
74 75
 		c.Fatal("couldn't find the busybox:latest image locally and failed to pull it")
75 76
 	}
... ...
@@ -83,6 +87,7 @@ func (s *DockerSuite) TestTagExistedNameWithoutForce(c *check.C) {
83 83
 
84 84
 // tag an image with an existed tag name with -f option should work
85 85
 func (s *DockerSuite) TestTagExistedNameWithForce(c *check.C) {
86
+	testRequires(c, DaemonIsLinux)
86 87
 	if err := pullImageIfNotExist("busybox:latest"); err != nil {
87 88
 		c.Fatal("couldn't find the busybox:latest image locally and failed to pull it")
88 89
 	}
... ...
@@ -92,6 +97,7 @@ func (s *DockerSuite) TestTagExistedNameWithForce(c *check.C) {
92 92
 }
93 93
 
94 94
 func (s *DockerSuite) TestTagWithPrefixHyphen(c *check.C) {
95
+	testRequires(c, DaemonIsLinux)
95 96
 	if err := pullImageIfNotExist("busybox:latest"); err != nil {
96 97
 		c.Fatal("couldn't find the busybox:latest image locally and failed to pull it")
97 98
 	}
... ...
@@ -115,6 +121,7 @@ func (s *DockerSuite) TestTagWithPrefixHyphen(c *check.C) {
115 115
 // ensure tagging using official names works
116 116
 // ensure all tags result in the same name
117 117
 func (s *DockerSuite) TestTagOfficialNames(c *check.C) {
118
+	testRequires(c, DaemonIsLinux)
118 119
 	names := []string{
119 120
 		"docker.io/busybox",
120 121
 		"index.docker.io/busybox",
... ...
@@ -7,6 +7,7 @@ import (
7 7
 )
8 8
 
9 9
 func (s *DockerSuite) TestTopMultipleArgs(c *check.C) {
10
+	testRequires(c, DaemonIsLinux)
10 11
 	out, _ := dockerCmd(c, "run", "-i", "-d", "busybox", "top")
11 12
 
12 13
 	cleanedContainerID := strings.TrimSpace(out)
... ...
@@ -19,6 +20,7 @@ func (s *DockerSuite) TestTopMultipleArgs(c *check.C) {
19 19
 }
20 20
 
21 21
 func (s *DockerSuite) TestTopNonPrivileged(c *check.C) {
22
+	testRequires(c, DaemonIsLinux)
22 23
 	out, _ := dockerCmd(c, "run", "-i", "-d", "busybox", "top")
23 24
 	cleanedContainerID := strings.TrimSpace(out)
24 25
 
... ...
@@ -37,6 +39,7 @@ func (s *DockerSuite) TestTopNonPrivileged(c *check.C) {
37 37
 }
38 38
 
39 39
 func (s *DockerSuite) TestTopPrivileged(c *check.C) {
40
+	testRequires(c, DaemonIsLinux)
40 41
 	out, _ := dockerCmd(c, "run", "--privileged", "-i", "-d", "busybox", "top")
41 42
 	cleanedContainerID := strings.TrimSpace(out)
42 43
 
... ...
@@ -8,6 +8,7 @@ import (
8 8
 )
9 9
 
10 10
 func (s *DockerSuite) TestVolumeCliCreate(c *check.C) {
11
+	testRequires(c, DaemonIsLinux)
11 12
 	dockerCmd(c, "volume", "create")
12 13
 
13 14
 	_, err := runCommand(exec.Command(dockerBinary, "volume", "create", "-d", "nosuchdriver"))
... ...
@@ -19,6 +20,7 @@ func (s *DockerSuite) TestVolumeCliCreate(c *check.C) {
19 19
 }
20 20
 
21 21
 func (s *DockerSuite) TestVolumeCliInspect(c *check.C) {
22
+	testRequires(c, DaemonIsLinux)
22 23
 	c.Assert(
23 24
 		exec.Command(dockerBinary, "volume", "inspect", "doesntexist").Run(),
24 25
 		check.Not(check.IsNil),
... ...
@@ -36,6 +38,7 @@ func (s *DockerSuite) TestVolumeCliInspect(c *check.C) {
36 36
 }
37 37
 
38 38
 func (s *DockerSuite) TestVolumeCliLs(c *check.C) {
39
+	testRequires(c, DaemonIsLinux)
39 40
 	out, _ := dockerCmd(c, "volume", "create")
40 41
 	id := strings.TrimSpace(out)
41 42
 
... ...
@@ -52,6 +55,7 @@ func (s *DockerSuite) TestVolumeCliLs(c *check.C) {
52 52
 }
53 53
 
54 54
 func (s *DockerSuite) TestVolumeCliRm(c *check.C) {
55
+	testRequires(c, DaemonIsLinux)
55 56
 	out, _ := dockerCmd(c, "volume", "create")
56 57
 	id := strings.TrimSpace(out)
57 58
 
... ...
@@ -11,6 +11,7 @@ import (
11 11
 
12 12
 // non-blocking wait with 0 exit code
13 13
 func (s *DockerSuite) TestWaitNonBlockedExitZero(c *check.C) {
14
+	testRequires(c, DaemonIsLinux)
14 15
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "sh", "-c", "true")
15 16
 	containerID := strings.TrimSpace(out)
16 17
 
... ...
@@ -27,6 +28,7 @@ func (s *DockerSuite) TestWaitNonBlockedExitZero(c *check.C) {
27 27
 
28 28
 // blocking wait with 0 exit code
29 29
 func (s *DockerSuite) TestWaitBlockedExitZero(c *check.C) {
30
+	testRequires(c, DaemonIsLinux)
30 31
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "trap 'exit 0' TERM; while true; do sleep 0.01; done")
31 32
 	containerID := strings.TrimSpace(out)
32 33
 
... ...
@@ -54,6 +56,7 @@ func (s *DockerSuite) TestWaitBlockedExitZero(c *check.C) {
54 54
 
55 55
 // non-blocking wait with random exit code
56 56
 func (s *DockerSuite) TestWaitNonBlockedExitRandom(c *check.C) {
57
+	testRequires(c, DaemonIsLinux)
57 58
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "sh", "-c", "exit 99")
58 59
 	containerID := strings.TrimSpace(out)
59 60
 
... ...
@@ -70,6 +73,7 @@ func (s *DockerSuite) TestWaitNonBlockedExitRandom(c *check.C) {
70 70
 
71 71
 // blocking wait with random exit code
72 72
 func (s *DockerSuite) TestWaitBlockedExitRandom(c *check.C) {
73
+	testRequires(c, DaemonIsLinux)
73 74
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "trap 'exit 99' TERM; while true; do sleep 0.01; done")
74 75
 	containerID := strings.TrimSpace(out)
75 76
 	c.Assert(waitRun(containerID), check.IsNil)
... ...
@@ -37,6 +37,7 @@ func newDockerHubPullSuite() *DockerHubPullSuite {
37 37
 
38 38
 // SetUpSuite starts the suite daemon.
39 39
 func (s *DockerHubPullSuite) SetUpSuite(c *check.C) {
40
+	testRequires(c, DaemonIsLinux)
40 41
 	s.d = NewDaemon(c)
41 42
 	if err := s.d.Start(); err != nil {
42 43
 		c.Fatalf("starting push/pull test daemon: %v", err)
... ...
@@ -45,8 +46,10 @@ func (s *DockerHubPullSuite) SetUpSuite(c *check.C) {
45 45
 
46 46
 // TearDownSuite stops the suite daemon.
47 47
 func (s *DockerHubPullSuite) TearDownSuite(c *check.C) {
48
-	if err := s.d.Stop(); err != nil {
49
-		c.Fatalf("stopping push/pull test daemon: %v", err)
48
+	if s.d != nil {
49
+		if err := s.d.Stop(); err != nil {
50
+			c.Fatalf("stopping push/pull test daemon: %v", err)
51
+		}
50 52
 	}
51 53
 }
52 54