TestDdevStartCustomEntrypoint tests ddev start with customizations in .ddev/web-entrypoint.d
(t *testing.T)
| 670 | |
| 671 | // TestDdevStartCustomEntrypoint tests ddev start with customizations in .ddev/web-entrypoint.d |
| 672 | func 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) |
nothing calls this directly
no test coverage detected