MCPcopy Create free account
hub / github.com/ddev/ddev / TestCmdAddonInstalled

Function TestCmdAddonInstalled

cmd/ddev/cmd/addon_test.go:91–146  ·  view source on GitHub ↗

TestCmdAddonInstalled tests `ddev add-on list --installed` and `ddev add-on remove`

(t *testing.T)

Source from the content-addressed store, hash-verified

89
90// TestCmdAddonInstalled tests `ddev add-on list --installed` and `ddev add-on remove`
91func 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

Callers

nothing calls this directly

Calls 7

HasGitHubTokenFunction · 0.92
RunHostCommandFunction · 0.92
GetGlobalDdevDirFunction · 0.92
getManifestFromLogsFunction · 0.85
getManifestMapFromLogsFunction · 0.85
ChdirMethod · 0.80
CleanupMethod · 0.80

Tested by

no test coverage detected