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)