(t *testing.T)
| 199 | } |
| 200 | |
| 201 | func 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{} |
nothing calls this directly
no test coverage detected