diff options
Diffstat (limited to 'packages/cli/src/ui/hooks')
| -rw-r--r-- | packages/cli/src/ui/hooks/slashCommandProcessor.test.ts | 42 | ||||
| -rw-r--r-- | packages/cli/src/ui/hooks/slashCommandProcessor.ts | 13 |
2 files changed, 49 insertions, 6 deletions
diff --git a/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts b/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts index 73669651..3e0a768c 100644 --- a/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts +++ b/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts @@ -129,6 +129,7 @@ describe('useSlashCommandProcessor', () => { getModel: vi.fn(() => 'test-model'), getProjectRoot: vi.fn(() => '/test/dir'), getCheckpointEnabled: vi.fn(() => true), + getBugCommand: vi.fn(() => undefined), } as unknown as Config; mockCorgiMode = vi.fn(); mockUseSessionStats.mockReturnValue({ @@ -418,6 +419,47 @@ Add any other context about the problem here. expect(open).toHaveBeenCalledWith(expectedUrl); expect(commandResult).toBe(true); }); + + it('should use the custom bug command URL from config if available', async () => { + const bugCommand = { + urlTemplate: + 'https://custom-bug-tracker.com/new?title={title}&body={body}', + }; + mockConfig = { + ...mockConfig, + getBugCommand: vi.fn(() => bugCommand), + } as unknown as Config; + + const { handleSlashCommand } = getProcessor(); + const bugDescription = 'This is a custom bug'; + const diagnosticInfo = ` +## Describe the bug +A clear and concise description of what the bug is. + +## Additional context +Add any other context about the problem here. + +## Diagnostic Information +* **CLI Version:** unknown +* **Git Commit:** ${GIT_COMMIT_INFO} +* **Operating System:** test-platform test-node-version +* **Sandbox Environment:** no sandbox +* **Model Version:** test-model +* **Memory Usage:** 11.8 MB +`; + const expectedUrl = bugCommand.urlTemplate + .replace('{title}', encodeURIComponent(bugDescription)) + .replace('{body}', encodeURIComponent(diagnosticInfo)); + + let commandResult: SlashCommandActionReturn | boolean = false; + await act(async () => { + commandResult = await handleSlashCommand(`/bug ${bugDescription}`); + }); + + expect(mockAddItem).toHaveBeenCalledTimes(2); + expect(open).toHaveBeenCalledWith(expectedUrl); + expect(commandResult).toBe(true); + }); }); describe('/quit and /exit commands', () => { diff --git a/packages/cli/src/ui/hooks/slashCommandProcessor.ts b/packages/cli/src/ui/hooks/slashCommandProcessor.ts index 97374e4f..9a9b7596 100644 --- a/packages/cli/src/ui/hooks/slashCommandProcessor.ts +++ b/packages/cli/src/ui/hooks/slashCommandProcessor.ts @@ -512,13 +512,14 @@ Add any other context about the problem here. `; let bugReportUrl = - 'https://github.com/google-gemini/gemini-cli/issues/new?template=bug_report.md'; - if (bugDescription) { - const encodedArgs = encodeURIComponent(bugDescription); - bugReportUrl += `&title=${encodedArgs}`; + 'https://github.com/google-gemini/gemini-cli/issues/new?template=bug_report.md&title={title}&body={body}'; + const bugCommand = config?.getBugCommand(); + if (bugCommand?.urlTemplate) { + bugReportUrl = bugCommand.urlTemplate; } - const encodedBody = encodeURIComponent(diagnosticInfo); - bugReportUrl += `&body=${encodedBody}`; + bugReportUrl = bugReportUrl + .replace('{title}', encodeURIComponent(bugDescription)) + .replace('{body}', encodeURIComponent(diagnosticInfo)); addMessage({ type: MessageType.INFO, |
