|
9 | 9 | "os" |
10 | 10 | "path" |
11 | 11 | "path/filepath" |
12 | | - "runtime" |
13 | 12 | "strconv" |
14 | 13 | "sync" |
15 | 14 | "syscall" |
|
45 | 44 |
|
46 | 45 | // the docker client binary to use |
47 | 46 | dockerBinary = "" |
| 47 | + |
| 48 | + testEnvOnce sync.Once |
48 | 49 | ) |
49 | 50 |
|
50 | 51 | func init() { |
@@ -74,25 +75,72 @@ func TestMain(m *testing.M) { |
74 | 75 | os.Exit(m.Run()) |
75 | 76 | } |
76 | 77 |
|
77 | | -func Test(t *testing.T) { |
78 | | - cli.SetTestEnvironment(testEnv) |
79 | | - fakestorage.SetTestEnvironment(&testEnv.Execution) |
80 | | - ienv.ProtectAll(t, &testEnv.Execution) |
| 78 | +func ensureTestEnvSetup(t *testing.T) { |
| 79 | + testEnvOnce.Do(func() { |
| 80 | + cli.SetTestEnvironment(testEnv) |
| 81 | + fakestorage.SetTestEnvironment(&testEnv.Execution) |
| 82 | + ienv.ProtectAll(t, &testEnv.Execution) |
| 83 | + }) |
| 84 | +} |
| 85 | + |
| 86 | +func TestDockerSuite(t *testing.T) { |
| 87 | + ensureTestEnvSetup(t) |
81 | 88 | suite.Run(t, &DockerSuite{}) |
| 89 | +} |
| 90 | + |
| 91 | +func TestDockerRegistrySuite(t *testing.T) { |
| 92 | + ensureTestEnvSetup(t) |
82 | 93 | suite.Run(t, &DockerRegistrySuite{ds: &DockerSuite{}}) |
| 94 | +} |
| 95 | + |
| 96 | +func TestDockerSchema1RegistrySuite(t *testing.T) { |
| 97 | + ensureTestEnvSetup(t) |
83 | 98 | suite.Run(t, &DockerSchema1RegistrySuite{ds: &DockerSuite{}}) |
| 99 | +} |
| 100 | + |
| 101 | +func TestDockerRegistryAuthHtpasswdSuite(t *testing.T) { |
| 102 | + ensureTestEnvSetup(t) |
84 | 103 | suite.Run(t, &DockerRegistryAuthHtpasswdSuite{ds: &DockerSuite{}}) |
| 104 | +} |
| 105 | + |
| 106 | +func TestDockerRegistryAuthTokenSuite(t *testing.T) { |
| 107 | + ensureTestEnvSetup(t) |
85 | 108 | suite.Run(t, &DockerRegistryAuthTokenSuite{ds: &DockerSuite{}}) |
| 109 | +} |
| 110 | + |
| 111 | +func TestDockerDaemonSuite(t *testing.T) { |
| 112 | + ensureTestEnvSetup(t) |
86 | 113 | suite.Run(t, &DockerDaemonSuite{ds: &DockerSuite{}}) |
| 114 | +} |
| 115 | + |
| 116 | +func TestDockerSwarmSuite(t *testing.T) { |
| 117 | + ensureTestEnvSetup(t) |
87 | 118 | suite.Run(t, &DockerSwarmSuite{ds: &DockerSuite{}}) |
| 119 | +} |
| 120 | + |
| 121 | +func TestDockerPluginSuite(t *testing.T) { |
| 122 | + ensureTestEnvSetup(t) |
88 | 123 | suite.Run(t, &DockerPluginSuite{ds: &DockerSuite{}}) |
89 | | - if runtime.GOOS != "windows" { |
90 | | - suite.Run(t, &DockerExternalVolumeSuite{ds: &DockerSuite{}}) |
91 | | - suite.Run(t, &DockerNetworkSuite{ds: &DockerSuite{}}) |
92 | | - // FIXME. Temporarily turning this off for Windows as GH16039 was breaking |
93 | | - // Windows to Linux CI @icecrime |
94 | | - suite.Run(t, newDockerHubPullSuite()) |
95 | | - } |
| 124 | +} |
| 125 | + |
| 126 | +func TestDockerExternalVolumeSuite(t *testing.T) { |
| 127 | + ensureTestEnvSetup(t) |
| 128 | + testRequires(t, DaemonIsLinux) |
| 129 | + suite.Run(t, &DockerExternalVolumeSuite{ds: &DockerSuite{}}) |
| 130 | +} |
| 131 | + |
| 132 | +func TestDockerNetworkSuite(t *testing.T) { |
| 133 | + ensureTestEnvSetup(t) |
| 134 | + testRequires(t, DaemonIsLinux) |
| 135 | + suite.Run(t, &DockerExternalVolumeSuite{ds: &DockerSuite{}}) |
| 136 | +} |
| 137 | + |
| 138 | +func TestDockerHubPullSuite(t *testing.T) { |
| 139 | + ensureTestEnvSetup(t) |
| 140 | + // FIXME. Temporarily turning this off for Windows as GH16039 was breaking |
| 141 | + // Windows to Linux CI @icecrime |
| 142 | + testRequires(t, DaemonIsLinux) |
| 143 | + suite.Run(t, newDockerHubPullSuite()) |
96 | 144 | } |
97 | 145 |
|
98 | 146 | type DockerSuite struct { |
|
0 commit comments