Skip to content

Commit 73c0926

Browse files
fix(amazonq): unsupported languages test generation query (#6363)
## Problem - The test generation for unsupported language files and external files is unreliable and flaky. - Telemetry updated to include new metadata for existing metadata. ## Solution - Fix to add file name as fallback in case of empty prompt or no code selection. - Telemetry updated and values passed to it in controller and messenger. Essentially same PR : #6323 was closed last week due to build issues. --- Before: https://github.com/user-attachments/assets/90ed6629-4753-41e6-9d11-b6d4dd0d6e7c After fix: https://github.com/user-attachments/assets/d0993345-cd2c-47ac-a8b5-1e9badf8fbac - Treat all work as PUBLIC. Private `feature/x` branches will not be squash-merged at release time. - Your code changes must meet the guidelines in [CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines). - License: I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Justin M. Keyes <[email protected]>
1 parent 12256f7 commit 73c0926

File tree

6 files changed

+32
-11
lines changed

6 files changed

+32
-11
lines changed

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"mergeReports": "ts-node ./scripts/mergeReports.ts"
4141
},
4242
"devDependencies": {
43-
"@aws-toolkits/telemetry": "^1.0.289",
43+
"@aws-toolkits/telemetry": "^1.0.293",
4444
"@playwright/browser-chromium": "^1.43.1",
4545
"@stylistic/eslint-plugin": "^2.11.0",
4646
"@types/he": "^1.2.3",
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "Bug Fix",
3+
"description": "/test: for unsupported languages was sometimes unreliable"
4+
}

packages/core/src/amazonqTest/chat/controller/controller.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ export class TestController {
246246
TelemetryHelper.instance.sendTestGenerationToolkitEvent(
247247
session,
248248
true,
249+
true,
249250
isCancel ? 'Cancelled' : 'Failed',
250251
session.startTestGenerationRequestId,
251252
performance.now() - session.testGenerationStartTime,
@@ -456,7 +457,14 @@ export class TestController {
456457
unsupportedMessage = `<span style="color: #EE9D28;">&#9888;<b>I'm sorry, but /test only supports Python and Java</b><br></span> I will still generate a suggestion below.`
457458
}
458459
this.messenger.sendMessage(unsupportedMessage, tabID, 'answer')
459-
await this.onCodeGeneration(session, message.prompt, tabID, fileName, filePath)
460+
await this.onCodeGeneration(
461+
session,
462+
message.prompt,
463+
tabID,
464+
fileName,
465+
filePath,
466+
workspaceFolder !== undefined
467+
)
460468
} else {
461469
this.messenger.sendCapabilityCard({ tabID })
462470
this.messenger.sendMessage(testGenSummaryMessage(fileName), message.tabID, 'answer-part')
@@ -722,6 +730,7 @@ export class TestController {
722730
TelemetryHelper.instance.sendTestGenerationToolkitEvent(
723731
session,
724732
true,
733+
true,
725734
'Succeeded',
726735
session.startTestGenerationRequestId,
727736
session.latencyOfTestGeneration,
@@ -799,20 +808,21 @@ export class TestController {
799808
message: string,
800809
tabID: string,
801810
fileName: string,
802-
filePath: string
811+
filePath: string,
812+
fileInWorkspace: boolean
803813
) {
804814
try {
805815
// TODO: Write this entire gen response to basiccommands and call here.
806816
const editorText = await fs.readFileText(filePath)
807817

808818
const triggerPayload = {
809-
query: `Generate unit tests for the following part of my code: ${message}`,
819+
query: `Generate unit tests for the following part of my code: ${message?.trim() || fileName}`,
810820
codeSelection: undefined,
811821
trigger: ChatTriggerType.ChatMessage,
812822
fileText: editorText,
813823
fileLanguage: session.fileLanguage,
814824
filePath: filePath,
815-
message: `Generate unit tests for the following part of my code: ${message}`,
825+
message: `Generate unit tests for the following part of my code: ${message?.trim() || fileName}`,
816826
matchPolicy: undefined,
817827
codeQuery: undefined,
818828
userIntent: UserIntent.GENERATE_UNIT_TESTS,
@@ -827,7 +837,8 @@ export class TestController {
827837
tabID,
828838
randomUUID.toString(),
829839
triggerPayload,
830-
fileName
840+
fileName,
841+
fileInWorkspace
831842
)
832843
} finally {
833844
this.messenger.sendChatInputEnabled(tabID, true)
@@ -845,6 +856,7 @@ export class TestController {
845856
TelemetryHelper.instance.sendTestGenerationToolkitEvent(
846857
session,
847858
true,
859+
true,
848860
'Succeeded',
849861
session.startTestGenerationRequestId,
850862
session.latencyOfTestGeneration,

packages/core/src/amazonqTest/chat/controller/messenger/messenger.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,8 @@ export class Messenger {
183183
tabID: string,
184184
triggerID: string,
185185
triggerPayload: TriggerPayload,
186-
fileName: string
186+
fileName: string,
187+
fileInWorkspace: boolean
187188
) {
188189
let message = ''
189190
let messageId = response.$metadata.requestId ?? ''
@@ -277,6 +278,7 @@ export class Messenger {
277278
TelemetryHelper.instance.sendTestGenerationToolkitEvent(
278279
session,
279280
false,
281+
fileInWorkspace,
280282
'Cancelled',
281283
messageId,
282284
performance.now() - session.testGenerationStartTime,
@@ -291,6 +293,7 @@ export class Messenger {
291293
TelemetryHelper.instance.sendTestGenerationToolkitEvent(
292294
session,
293295
false,
296+
fileInWorkspace,
294297
'Succeeded',
295298
messageId,
296299
performance.now() - session.testGenerationStartTime

packages/core/src/codewhisperer/util/telemetryHelper.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ export class TelemetryHelper {
7070
public sendTestGenerationToolkitEvent(
7171
session: Session,
7272
isSupportedLanguage: boolean,
73+
isFileInWorkspace: boolean,
7374
result: 'Succeeded' | 'Failed' | 'Cancelled',
7475
requestId?: string,
7576
perfClientLatency?: number,
@@ -90,6 +91,7 @@ export class TelemetryHelper {
9091
cwsprChatProgrammingLanguage: session.fileLanguage ?? 'plaintext',
9192
hasUserPromptSupplied: session.hasUserPromptSupplied,
9293
isSupportedLanguage: isSupportedLanguage,
94+
isFileInWorkspace: isFileInWorkspace,
9395
result: result,
9496
artifactsUploadDuration: artifactsUploadDuration,
9597
buildPayloadBytes: buildPayloadBytes,

0 commit comments

Comments
 (0)