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

Function TestDdevStartCustomEntrypoint

pkg/ddevapp/ddevapp_test.go:672–732  ·  view source on GitHub ↗

TestDdevStartCustomEntrypoint tests ddev start with customizations in .ddev/web-entrypoint.d

(t *testing.T)

Source from the content-addressed store, hash-verified

670
671// TestDdevStartCustomEntrypoint tests ddev start with customizations in .ddev/web-entrypoint.d
672func TestDdevStartCustomEntrypoint(t *testing.T) {
673 if nodeps.IsWindows() &&
674 (globalconfig.DdevGlobalConfig.IsMutagenEnabled() ||
675 nodeps.PerformanceModeDefault == types.PerformanceModeMutagen) {
676 t.Skip("Skipping on Windows/Mutagen, it is too slow to app.Start()")
677 }
678 assert := asrt.New(t)
679 app := &ddevapp.DdevApp{}
680
681 site := TestSites[0]
682 origDir, _ := os.Getwd()
683
684 runTime := util.TimeTrackC(fmt.Sprintf("%s DdevStart", site.Name))
685
686 err := app.Init(site.Dir)
687 assert.NoError(err)
688
689 t.Cleanup(func() {
690 err = os.Chdir(origDir)
691 assert.NoError(err)
692 err = app.Stop(true, false)
693 assert.NoError(err)
694 _ = os.RemoveAll(filepath.Join(app.AppRoot, "env.php"))
695 _ = fileutil.PurgeDirectory(app.GetConfigPath("web-entrypoint.d"))
696 assert.False(dockerutil.NetworkExists("ddev-" + app.Name + "_default"))
697 })
698
699 r := nodeps.RandomString(10)
700 err = fileutil.TemplateStringToFile(fmt.Sprintf(`touch /var/tmp/%s && export TestDdevStartCustomEntrypoint=%s`, t.Name(), r), nil, app.GetConfigPath(`web-entrypoint.d/first.sh`))
701 require.NoError(t, err)
702 err = fileutil.TemplateStringToFile(`touch /var/tmp/second`, nil, app.GetConfigPath(`web-entrypoint.d/second.sh`))
703 require.NoError(t, err)
704
705 // See if our environment variable can be read via php-fpm
706 err = fileutil.TemplateStringToFile(fmt.Sprintf("<?php\n$v = getenv('%s'); echo $v;", t.Name()), nil, filepath.Join(app.AppRoot, app.Docroot, "env.php"))
707 require.NoError(t, err)
708
709 err = app.Start()
710 require.NoError(t, err)
711
712 stdout, stderr, err := app.Exec(&ddevapp.ExecOpts{
713 Cmd: fmt.Sprintf(`ls /var/tmp/%s >/dev/null`, t.Name()),
714 })
715 require.NoError(t, err, "stdout=%s, stderr=%s", stdout, stderr)
716
717 // Test that the environment variable that we set is now available
718 // via php-fpm. It is *not* available in regular shell because it
719 // was set in start.sh, whose shell is not inherited this way.
720 stdout, stderr, err = app.Exec(&ddevapp.ExecOpts{
721 Cmd: `curl -s --fail localhost/env.php`,
722 })
723 require.NoError(t, err, "stdout=%s, stderr=%s", stdout, stderr)
724 require.Equal(t, r, stdout)
725
726 stdout, stderr, err = app.Exec(&ddevapp.ExecOpts{
727 Cmd: `ls /var/tmp/second >/dev/null`,
728 })
729 require.NoError(t, err, "stdout=%s, stderr=%s", stdout, stderr)

Callers

nothing calls this directly

Calls 14

InitMethod · 0.95
StopMethod · 0.95
GetConfigPathMethod · 0.95
StartMethod · 0.95
ExecMethod · 0.95
IsWindowsFunction · 0.92
TimeTrackCFunction · 0.92
PurgeDirectoryFunction · 0.92
NetworkExistsFunction · 0.92
RandomStringFunction · 0.92
TemplateStringToFileFunction · 0.92
CleanupMethod · 0.80

Tested by

no test coverage detected