From f72957dc9502bec80f80618a76002f8962c90881 Mon Sep 17 00:00:00 2001 From: Randy Fay Date: Thu, 11 Jun 2020 09:07:38 -0700 Subject: [PATCH] Fix the latest launch problem in 2256, fixes #2256 (#2304) --- cmd/ddev/cmd/commands_test.go | 48 +++++++++++++++++++ .../cmd/dotddev_assets/commands/host/launch | 24 ++++++---- cmd/ddev/cmd/packrd/packed-packr.go | 2 +- 3 files changed, 63 insertions(+), 11 deletions(-) diff --git a/cmd/ddev/cmd/commands_test.go b/cmd/ddev/cmd/commands_test.go index c4d04489a2c..1f731f605a1 100644 --- a/cmd/ddev/cmd/commands_test.go +++ b/cmd/ddev/cmd/commands_test.go @@ -1,13 +1,17 @@ package cmd import ( + "github.com/drud/ddev/pkg/ddevapp" "github.com/drud/ddev/pkg/exec" "github.com/drud/ddev/pkg/fileutil" + "github.com/drud/ddev/pkg/nodeps" + "github.com/drud/ddev/pkg/testcommon" asrt "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "os" osexec "os/exec" "path/filepath" + "strings" "testing" ) @@ -78,3 +82,47 @@ columns_priv`) assert.NoError(err, "Failed to run ddev help %s", c) } } + +// TestLaunchCommand tests that the launch command behaves all the ways it should behave +func TestLaunchCommand(t *testing.T) { + assert := asrt.New(t) + + // Create a temporary directory and switch to it. + tmpdir := testcommon.CreateTmpDir(t.Name()) + defer testcommon.CleanupDir(tmpdir) + defer testcommon.Chdir(tmpdir)() + + _ = os.Setenv("DDEV_DEBUG", "true") + app, err := ddevapp.NewApp(tmpdir, false, "") + require.NoError(t, err) + err = app.WriteConfig() + require.NoError(t, err) + err = app.Start() + require.NoError(t, err) + defer func() { + _ = app.Stop(true, false) + }() + + // This only tests the https port changes, but that might be enough + for _, routerPort := range []string{nodeps.DdevDefaultRouterHTTPSPort, "8443"} { + app.RouterHTTPSPort = routerPort + _ = app.WriteConfig() + err = app.Start() + assert.NoError(err) + + desc, _ := app.Describe() + cases := map[string]string{ + "": app.GetPrimaryURL(), + "-p": desc["phpmyadmin_https_url"].(string), + "-m": desc["mailhog_https_url"].(string), + } + for partialCommand, expect := range cases { + // Try with the base URL, simplest case + c := DdevBin + ` launch ` + partialCommand + ` | awk '/FULLURL/ {print $2}'` + out, err := exec.RunCommand("bash", []string{"-c", c}) + out = strings.Trim(out, "\n") + assert.NoError(err, `couldn't run "%s"", output=%s`, c, out) + assert.Equal(expect, out, "ouptput of %s is incorrect with app.RouterHTTPSPort=%s: %s", c, app.RouterHTTPSPort, out) + } + } +} diff --git a/cmd/ddev/cmd/dotddev_assets/commands/host/launch b/cmd/ddev/cmd/dotddev_assets/commands/host/launch index b8216dc13c8..994cbde1fc6 100755 --- a/cmd/ddev/cmd/dotddev_assets/commands/host/launch +++ b/cmd/ddev/cmd/dotddev_assets/commands/host/launch @@ -10,23 +10,23 @@ HTTPS="" if [ ${DDEV_PRIMARY_URL%://*} = "https" ]; then HTTPS=true; fi while :; do - case $1 in + case ${1:-} in -h|-\?|--help) show_help exit ;; -p|--phpmyadmin) if [ "${HTTPS}" = "" ]; then - FULLURL="${FULLURL}:${DDEV_PHPMYADMIN_PORT}" + FULLURL="${FULLURL%:[0-9]*}:${DDEV_PHPMYADMIN_PORT}" else - FULLURL="${FULLURL}:${DDEV_PHPMYADMIN_HTTPS_PORT}" + FULLURL="${FULLURL%:[0-9]*}:${DDEV_PHPMYADMIN_HTTPS_PORT}" fi ;; -m|--mailhog) if [ "${HTTPS}" = "" ]; then - FULLURL="${FULLURL}:${DDEV_MAILHOG_PORT}" + FULLURL="${FULLURL%:[0-9]*}:${DDEV_MAILHOG_PORT}" else - FULLURL="${FULLURL}:${DDEV_MAILHOG_HTTPS_PORT}" + FULLURL="${FULLURL%:[0-9]*}:${DDEV_MAILHOG_HTTPS_PORT}" fi ;; @@ -40,16 +40,20 @@ while :; do *) # Default case: No more options, so break out of the loop. break esac - + shift done -if [ -n "${1:-}" ] ; then - if [[ ${1::1} != "/" ]] ; then - FULLURL="${FULLURL}/"; +if [ -n "${1:-}" ] ; then + if [[ ${1::1} != "/" ]] ; then + FULLURL="${FULLURL}/"; fi - FULLURL="${FULLURL}${1}"; + FULLURL="${FULLURL}${1}"; +fi + +if [ ! -z ${DDEV_DEBUG:-} ]; then + printf "FULLURL $FULLURL\n" && exit 0 fi case $OSTYPE in diff --git a/cmd/ddev/cmd/packrd/packed-packr.go b/cmd/ddev/cmd/packrd/packed-packr.go index e040bcaadac..0e745f9c720 100644 --- a/cmd/ddev/cmd/packrd/packed-packr.go +++ b/cmd/ddev/cmd/packrd/packed-packr.go @@ -14,7 +14,7 @@ var _ = func() error { const gk = "38809f1ea553e1f71ca4cb178afb1a1e" g := packr.New(gk, "") hgr, err := resolver.NewHexGzip(map[string]string{ - "02a6f9085bf494232da6cee02cead9d3": "1f8b08000000000000ffb454616fe23810fd9e5ff1d6b0b7575437e23e06f55648ed1d95a0456cb953d54595210eb136b12ddbd98020fffd6402bb84a595ee74eb4fc9f8cdb3dff3ccb4de857321c339b36910b45a68c531ff4a975c72c31c8f23dc2558ab0225930e4e81c7c281c918aa9470a9b04844c62f6178aebef23a9209c9af3cd90db70b23b4134a4618b2422e5230cc8d2a2d3728854be1528e45610c970e5638eed3a6962d7984ac4e78d6cca5333c53bda554a73a5fb33817d247f22da5391359aa96339f78bb62b9ce7804e255ec090894690410ee0842c3b532ce86d63157d850a7fa47a84eb59089baf29b974894c178301eadfb9ea089a41e3062221ba8e5c94e4e82e08fe970389d0cafdb9b9b9bdbbf5ec693bb517ff2f4329d0cab60f0f838fe744d4820123ce347c4fb280c3b15ae4152e7b42598f5bc6f1275a23305ef21114150a622e3887a885500bf16cc72b4bb10b2fef78ba65bfaf9e396d29467fae27bdc2f9baaf2c5c79b61be12ae19e9f58e089b0fd3a4dc4922edcdeeaa15f122beddbf4909e06012696ff69f5574b063301e3df56f4677f72fe387c963451ac93cb3fc3fb2ed2e768e33116f483eaabc9fa377d4bf1b0e1efefc3fc41ea8fe8dd223a9f4a279520bb7befd13b02c83da35b7bd3a2d23919c14ccdc70f6e50d433f764e4a511b215d820f7ff727f711a6f28bf413a73e0fbf8aa55486c71711dedbcff20348bb4bf0fb2fbfbd7e42e74406fc784a5891b95d9744b857c895e1074997b0aabe3554e1bc5e3faa32a5f4d5abcab8658b00c1b107b1923ca81b9b4a5f18dd88560433ec5b38a84bc6b77d378aba15de5d838404b363c4d9e70d49cfeff9be3fbbdfde742b0ff1807a0e3c7c7a7c1adfd6c32013b258d1a52c6adb57f1922acd25bee707df1c243133a59064ff44afe34a213ba4832d486ed7f680b78e19772661e7d63f010000ffff8b24121080060000", + "02a6f9085bf494232da6cee02cead9d3": "1f8b08000000000000ffb454ef6fe23618fe9ebfe2a9a1bd15d5cd75df16d49d98604725681157365514552e718875891dd9ced10ef2bf4f4e428f706da5695b3e45ef8fc77e9ef7f5d33af21f85f41f99893dafd5422b0cf937bae2926b667918e02ac2b3cab166d2c22af05058301942ad256c2c0c2291f033689eaa6fbc8a2442f27307d6e766a94566859201462c97cb180c8f5aad0dd7580b1bc3c61ccb5c6b2e2d8cb0dcb5cd0c5bf10049d530cf988d1798d36c4b691667e9330b53215d24dd529a3291c46ab5708d83279666090f401c8b1a8040e946007e09e06b9e296d8d6f2cb3b9f1b338fbb1348b33212375ee92678894c66438193ff71c40b392ba823113c950ad0e3229f1bcdf67a3d16c3aba6c6ffafdc11f0f93e9d5b837bd7b984d478537bcbd9d7cb924c41311e6f8b1e238f0fd4e814b90d8dacc102cba4e3789aad1ea9c771109cf5bc722e108ba089507f72d99e1686f2e025a40c82ae63e1a6fe9fda72da5314fb2d3ef71f79958ad1f5cbc19e64fc23623ddee1e6073384dc89216696fcaeb16c41179e1d08404b0138ab437f5ef7130ff487f59748a6027cd7032beebf5c757d70f939be96d411a203c31fc5fa296177d0d3b12ef48b0b78dff2fff71ef6a34bcf9fc5f92df41fe13e67bd4e969f3c41606ce2222b024812a0dc09c1fae99880e16ea5173f6f51d813f750e5635d342da081ffeec4daf03cce457e95ca93a0f3f8995549a87a7018ecdbdfc00d2be20f8f5e4e7b74fe81cd080b3b088e5892d5f52806b855469bea37406a3aa5b43e5d6f175769628959dbfc98c1bb6aca5ab250895e45ef5f6a9747be29e2bc1022f1be272f3f21d0717058e2e417c82c55ec16b332e7ce2a8395f7835ddde5c14a4ebb97c79f611e85f3bf3e90f7e9b7d76a6b1bfa5b5daa40640bbfeb997042727a541e0638957d9cecd97dbbbc9a0f29d44c8fc89ae645e4df0295c51957189efd7f15e864142a6d742927ada6fd7ad85ec900eb620a97936bb7a6399b6af3494c2ff1d0000ffffffcabbe0ef060000", "08efec459d444bc9eb8bf32159d4a2e3": "1f8b08000000000000ff5c8eb18e83300c86f73c858fdc8ad8996eb8be40a54e88c11037584a1d141bdac7af4287565dbfefb3f5fb9f6e62e926d4c539efc187407b1b49a8a051a8e89f742ebc1a67e9e1bc091c49e29d80453910d84270a709e62c862c54ead94531520f47375c13461d61c01275acf6f4c0db9aa887a67e7b55b8d9d2402e9f2cb11a281be9b769db9d8a7296c6b9f7a2df3ff70c0000ffff176c8cedd3000000", "14c63bd11eb5c6e19c764e5ac5649a59": "1f8b08000000000000ff7c934d53db301086effe153bc3a933ce274920b90171877600a78e4b875390a5b52d90b51a4976c8bfefd82643292d27eb631febdd77774f84c06650a046cb3c8a60cbad34de81d4e04be940488bdc933dc05e2a051902be20af3d0a90da4981e04b843d660127ed99d46887f0403570a681933974f7f8c22aa31072a910c8c253ed3c58d4ac42907e153c560d085bbb72788cec768f21e4648f74084c0b90fea88453850103251b044e55c5b41806c105e8bacad002e580ba91967485da43c3ac64994207cc22b8da18255180a74ea0ebd30e416aae6a2175b10a82f53abadf5d6c36491ca7ab5ebb3b388f1528e2cc4bd2ed232d6e2c3d21f740badb96e4fc971ebf8eb7e96e7db9dbc449ba821be24cb5b760c8fa232d98671973080e6d83f60ff05774b98d92fb28f994df63f681bc4ed3cdf6df546b69e9bd71addcbfd8757cd5679ba062be75d6305f426ea902668c25f2ad658278bb7c7befeee2365ac1555b858143c3ba6602255d27f2eb8ff55d674a5b70d7539bebcdee3e4ab6dfe2bbfee02dd7f46113ad401752bf0c725385c00ce325be5bf342befe2789bf4757e92b246c6d983a0fc11f0c9d869031fe2c2c9910f66485b1e85c08e8f9b08793f8671a259d59af5e25547bb4ef8dfa10bbfd24d805c12d59fc4fef55ecd0ce106b9854ed49080eb1e756a351217d5967434ed548d85a8cdad91c658ab2d17ccacf9693b9409c4dc4ec7cb6c897f962b29c4fc7d9d974b15ccef8f8f46ccae723f35c741833e6f81d16747233198f17839bc9f8741cfc0e0000ffff69f7a1dcf3030000", "21a0484a6d087670e7959f77db252ecd": "1f8b08000000000000ff3c8e314fc4300c46f7fc8a8f2b23e5f66e483d892d150556e426e61244132bf10115e2bfa3dcd0cd7acf965f77735c623a2e5483315d87ce7bfeeacf9cb890b26f68e4ea4a148d390db0c209d3e3346b2e2bbea3066860b84b299c1452f2073b6d672f95ce3c4082d4b6dbd0e98756f9e40187f665570763768758b192b3735f855d7c8fee0ecb45c1543768067912bd0e69839d4d6e3d3ded49f72482dbdf713cbdbe3d4cd393b5cf7fe63f0000ffff18fb6254e5000000",