MCPcopy Index your code
hub / github.com/ddev/ddev / TestCreateGlobalDdevDir

Function TestCreateGlobalDdevDir

cmd/ddev/cmd/root_test.go:189–260  ·  view source on GitHub ↗

TestCreateGlobalDdevDir checks to make sure that DDEV will create a ~/.ddev (and updatecheck)

(t *testing.T)

Source from the content-addressed store, hash-verified

187
188// TestCreateGlobalDdevDir checks to make sure that DDEV will create a ~/.ddev (and updatecheck)
189func 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)

Callers

nothing calls this directly

Calls 10

GetGlobalDdevDirLocationFunction · 0.92
CreateTmpDirFunction · 0.92
RunHostCommandFunction · 0.92
RunCommandFunction · 0.92
CopyDirFunction · 0.92
CleanupMethod · 0.80
ChdirMethod · 0.80
ErrorMethod · 0.80
IsMutagenEnabledMethod · 0.45

Tested by

no test coverage detected