TestCreateGlobalDdevDir checks to make sure that DDEV will create a ~/.ddev (and updatecheck)
(t *testing.T)
| 187 | |
| 188 | // TestCreateGlobalDdevDir checks to make sure that DDEV will create a ~/.ddev (and updatecheck) |
| 189 | func TestCreateGlobalDdevDir(t *testing.T) { |
| 190 | if nodeps.PerformanceModeDefault == types.PerformanceModeMutagen || |
| 191 | (globalconfig.DdevGlobalConfig.IsMutagenEnabled() && |
| 192 | nodeps.PerformanceModeDefault != types.PerformanceModeNone) || |
| 193 | nodeps.NoBindMountsDefault { |
| 194 | t.Skip("Skipping because this changes homedir and breaks Mutagen functionality") |
| 195 | } |
| 196 | |
| 197 | assert := asrt.New(t) |
| 198 | origDir, _ := os.Getwd() |
| 199 | origDdevDir := globalconfig.GetGlobalDdevDirLocation() |
| 200 | |
| 201 | tmpHomeDir := testcommon.CreateTmpDir("globalDdevCheck") |
| 202 | |
| 203 | t.Cleanup( |
| 204 | func() { |
| 205 | _, err := exec.RunHostCommand(DdevBin, "poweroff") |
| 206 | assert.NoError(err) |
| 207 | err = os.Chdir(origDir) |
| 208 | assert.NoError(err) |
| 209 | err = os.RemoveAll(tmpHomeDir) |
| 210 | assert.NoError(err) |
| 211 | |
| 212 | // Because the start will have done a poweroff (new version), |
| 213 | // make sure sites are running again. |
| 214 | for _, site := range TestSites { |
| 215 | _, _ = exec.RunCommand(DdevBin, []string{"start", "-y", site.Name}) |
| 216 | } |
| 217 | }) |
| 218 | |
| 219 | err := os.Chdir(TestSites[0].Dir) |
| 220 | require.NoError(t, err) |
| 221 | |
| 222 | _, dockerHost, _ := dockerutil.GetDockerContextNameAndHost() |
| 223 | |
| 224 | // Change the homedir temporarily |
| 225 | t.Setenv("HOME", tmpHomeDir) |
| 226 | t.Setenv("USERPROFILE", tmpHomeDir) |
| 227 | // Set DOCKER_HOST to the same value as before, otherwise wrong Docker context may be used |
| 228 | t.Setenv("DOCKER_HOST", dockerHost) |
| 229 | // Set $XDG_CONFIG_HOME to empty string, otherwise it will take precedence over $HOME |
| 230 | t.Setenv("XDG_CONFIG_HOME", "") |
| 231 | |
| 232 | // Make sure that the tmpDir/.ddev and tmpDir/.ddev/.update don't exist before we run ddev. |
| 233 | _, err = os.Stat(filepath.Join(tmpHomeDir, ".ddev")) |
| 234 | require.Error(t, err) |
| 235 | assert.True(os.IsNotExist(err)) |
| 236 | |
| 237 | out, err := exec.RunHostCommand(DdevBin, "config", "--auto") |
| 238 | require.NoError(t, err, "failed to ddev config --auto, out=%v, err=%v", out, err) |
| 239 | |
| 240 | // Now global .ddev should exist |
| 241 | _, err = os.Stat(filepath.Join(tmpHomeDir, ".ddev")) |
| 242 | require.NoError(t, err) |
| 243 | |
| 244 | // Make sure we have the .ddev/bin dir we need for docker-compose and Mutagen |
| 245 | err = fileutil.CopyDir(filepath.Join(origDdevDir, "bin"), filepath.Join(tmpHomeDir, ".ddev/bin")) |
| 246 | require.NoError(t, err) |
nothing calls this directly
no test coverage detected