TestCmdAddonInstalled tests `ddev add-on list --installed` and `ddev add-on remove`
(t *testing.T)
| 89 | |
| 90 | // TestCmdAddonInstalled tests `ddev add-on list --installed` and `ddev add-on remove` |
| 91 | func TestCmdAddonInstalled(t *testing.T) { |
| 92 | if !github.HasGitHubToken() { |
| 93 | t.Skip("Skipping because DDEV_GITHUB_TOKEN is not set") |
| 94 | } |
| 95 | t.Setenv("DDEV_DEBUG", "") |
| 96 | assert := asrt.New(t) |
| 97 | |
| 98 | origDir, _ := os.Getwd() |
| 99 | site := TestSites[0] |
| 100 | err := os.Chdir(site.Dir) |
| 101 | require.NoError(t, err) |
| 102 | |
| 103 | t.Cleanup(func() { |
| 104 | _, err = exec.RunHostCommand(DdevBin, "add-on", "remove", "memcached") |
| 105 | assert.NoError(err) |
| 106 | _, err = exec.RunHostCommand(DdevBin, "add-on", "remove", "redis") |
| 107 | assert.NoError(err) |
| 108 | |
| 109 | err = os.Chdir(origDir) |
| 110 | assert.NoError(err) |
| 111 | _ = os.RemoveAll(filepath.Join(globalconfig.GetGlobalDdevDir(), "commands/web/global-touched")) |
| 112 | }) |
| 113 | |
| 114 | out, err := exec.RunHostCommand(DdevBin, "add-on", "get", "ddev/ddev-memcached", "--json-output") |
| 115 | require.NoError(t, err, "failed ddev add-on get ddev/ddev-memcached: %v (output='%s')", err, out) |
| 116 | |
| 117 | memcachedManifest := getManifestFromLogs(t, out) |
| 118 | require.NoError(t, err) |
| 119 | |
| 120 | out, err = exec.RunHostCommand(DdevBin, "add-on", "get", "ddev/ddev-redis", "--json-output") |
| 121 | require.NoError(t, err, "failed ddev add-on get ddev/ddev-redis: %v (output='%s')", err, out) |
| 122 | |
| 123 | redisManifest := getManifestFromLogs(t, out) |
| 124 | require.NoError(t, err) |
| 125 | |
| 126 | installedOutput, err := exec.RunHostCommand(DdevBin, "add-on", "list", "--installed", "--json-output") |
| 127 | require.NoError(t, err, "failed ddev add-on list --installed --json-output: %v (output='%s')", err, installedOutput) |
| 128 | installedManifests := getManifestMapFromLogs(t, installedOutput) |
| 129 | |
| 130 | require.NotEmptyf(t, memcachedManifest["Version"], "memcached manifest is empty: %v", memcachedManifest) |
| 131 | require.NotEmptyf(t, redisManifest["Version"], "redis manifest is empty: %v", redisManifest) |
| 132 | |
| 133 | assert.Equal(memcachedManifest["Version"], installedManifests["memcached"]["Version"]) |
| 134 | assert.Equal(redisManifest["Version"], installedManifests["redis"]["Version"]) |
| 135 | |
| 136 | // Now try the remove using other techniques (full repo name, partial repo name) |
| 137 | for _, n := range []string{"ddev/ddev-redis", "ddev-redis", "redis"} { |
| 138 | out, err = exec.RunHostCommand(DdevBin, "add-on", "get", "ddev/ddev-redis", "--json-output") |
| 139 | require.NoError(t, err, "failed ddev add-on get %s: %v (output='%s')", n, err, out) |
| 140 | out, err = exec.RunHostCommand(DdevBin, "add-on", "remove", n) |
| 141 | require.NoError(t, err, "unable to ddev add-on remove %s: %v, output='%s'", n, err, out) |
| 142 | } |
| 143 | // Now make sure we put it back so it can be removed in cleanu |
| 144 | out, err = exec.RunHostCommand(DdevBin, "add-on", "get", "ddev/ddev-redis") |
| 145 | assert.NoError(err, "unable to ddev add-on get redis: %v, output='%s'", err, out) |
| 146 | } |
| 147 | |
| 148 | // getManifestFromLogs returns the manifest built from 'raw' section of |
nothing calls this directly
no test coverage detected