MCPcopy Create free account
hub / github.com/cli/cli / TestManager_Dispatch_ghExtensionEnv

Function TestManager_Dispatch_ghExtensionEnv

pkg/cmd/extension/manager_test.go:201–268  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

199}
200
201func TestManager_Dispatch_ghExtensionEnv(t *testing.T) {
202 tests := []struct {
203 name string
204 extraEnv []string
205 wantOut string
206 }{
207 {
208 name: "sets GH_EXTENSION",
209 wantOut: "GH_EXTENSION=1\nGH_HELPER_INHERITED=\n",
210 },
211 {
212 name: "preserves the rest of the environment",
213 extraEnv: []string{"GH_HELPER_INHERITED=yes"},
214 wantOut: "GH_EXTENSION=1\nGH_HELPER_INHERITED=yes\n",
215 },
216 {
217 name: "overrides an inherited GH_EXTENSION",
218 extraEnv: []string{"GH_EXTENSION=0", "GH_HELPER_INHERITED=yes"},
219 wantOut: "GH_EXTENSION=1\nGH_HELPER_INHERITED=yes\n",
220 },
221 }
222
223 for _, tt := range tests {
224 t.Run("script extension: "+tt.name, func(t *testing.T) {
225 dataDir := t.TempDir()
226 updateDir := t.TempDir()
227 extDir := filepath.Join(dataDir, "extensions", "gh-hello")
228 require.NoError(t, stubExtension(filepath.Join(extDir, "gh-hello")))
229
230 gc, gcOne := &mockGitClient{}, &mockGitClient{}
231 gc.On("ForRepo", extDir).Return(gcOne).Once()
232
233 m := newTestManager(dataDir, updateDir, nil, gc, nil, tt.extraEnv...)
234
235 stdout := &bytes.Buffer{}
236 stderr := &bytes.Buffer{}
237 found, err := m.Dispatch([]string{"hello", "print-env"}, nil, stdout, stderr)
238 require.NoError(t, err)
239 require.True(t, found)
240
241 assert.Equal(t, tt.wantOut, stdout.String())
242 assert.Equal(t, "", stderr.String())
243 })
244
245 t.Run("binary extension: "+tt.name, func(t *testing.T) {
246 dataDir := t.TempDir()
247 updateDir := t.TempDir()
248 extDir := filepath.Join(dataDir, "extensions", "gh-hello")
249 require.NoError(t, stubBinaryExtension(extDir, binManifest{
250 Owner: "owner",
251 Name: "gh-hello",
252 Host: "github.com",
253 Tag: "v1.0.0",
254 }))
255
256 m := newTestManager(dataDir, updateDir, nil, nil, nil, tt.extraEnv...)
257
258 stdout := &bytes.Buffer{}

Callers

nothing calls this directly

Calls 8

stubExtensionFunction · 0.85
newTestManagerFunction · 0.85
stubBinaryExtensionFunction · 0.85
JoinMethod · 0.80
EqualMethod · 0.80
RunMethod · 0.65
DispatchMethod · 0.65
StringMethod · 0.65

Tested by

no test coverage detected