diff --git a/packages/amazonq/.changes/next-release/Bug Fix-b071ef14-0566-4efa-9a16-43362b87639f.json b/packages/amazonq/.changes/next-release/Bug Fix-b071ef14-0566-4efa-9a16-43362b87639f.json new file mode 100644 index 00000000000..7a89a4cee67 --- /dev/null +++ b/packages/amazonq/.changes/next-release/Bug Fix-b071ef14-0566-4efa-9a16-43362b87639f.json @@ -0,0 +1,4 @@ +{ + "type": "Bug Fix", + "description": "Amazon Q /test: Fix to redirect /test to generate tests in chat for external files out of workspace scope." +} diff --git a/packages/core/src/amazonqTest/chat/controller/controller.ts b/packages/core/src/amazonqTest/chat/controller/controller.ts index 8c99e7a2dcb..35e234cc01a 100644 --- a/packages/core/src/amazonqTest/chat/controller/controller.ts +++ b/packages/core/src/amazonqTest/chat/controller/controller.ts @@ -439,16 +439,21 @@ export class TestController { const language = await this.getLanguageForFilePath(filePath) session.fileLanguage = language + const workspaceFolder = vscode.workspace.getWorkspaceFolder(fileEditorToTest.document.uri) /* For Re:Invent 2024 we are supporting only java and python for unit test generation, rest of the languages shows the similar experience as CWC */ - if (language !== 'java' && language !== 'python') { - const unsupportedLanguage = language.charAt(0).toUpperCase() + language.slice(1) - let unsupportedMessage = `I'm sorry, but /test only supports Python and Java
While ${unsupportedLanguage} is not supported, I will generate a suggestion below. ` - // handle the case when language is undefined - if (!unsupportedLanguage) { - unsupportedMessage = `I'm sorry, but /test only supports Python and Java
I will still generate a suggestion below. ` + if (!['java', 'python'].includes(language) || workspaceFolder === undefined) { + let unsupportedMessage: string + const unsupportedLanguage = language ? language.charAt(0).toUpperCase() + language.slice(1) : '' + if (!workspaceFolder) { + // File is outside of workspace + unsupportedMessage = `I can't generate tests for ${fileName} because the file is outside of workspace scope.
I can still provide examples, instructions and code suggestions.` + } else if (unsupportedLanguage) { + unsupportedMessage = `I'm sorry, but /test only supports Python and Java
While ${unsupportedLanguage} is not supported, I will generate a suggestion below.` + } else { + unsupportedMessage = `I'm sorry, but /test only supports Python and Java
I will still generate a suggestion below.` } this.messenger.sendMessage(unsupportedMessage, tabID, 'answer') await this.onCodeGeneration(session, message.prompt, tabID, fileName, filePath)