Skip to content

Commit ecc73fe

Browse files
authored
Fix for Test generation zip to include target file, Regex pattern fix and fix for /test query for non-supported languages. (#5261)
1 parent 48fc68a commit ecc73fe

File tree

5 files changed

+37
-6
lines changed

5 files changed

+37
-6
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "Amazon Q /test: Fix for test generation payload creation to not filter out target file."
4+
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqCodeTest/controller/CodeTestChatController.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ class CodeTestChatController(
277277

278278
val requestData = ChatRequestData(
279279
tabId = session.tabId,
280-
message = "Generate unit tests for the following part of my code: ${message.prompt}",
280+
message = "Generate unit tests for the following part of my code: ${message.prompt.ifBlank { fileInfo.fileName }}",
281281
activeFileContext = activeFileContext,
282282
userIntent = UserIntent.GENERATE_UNIT_TESTS,
283283
triggerType = TriggerType.ContextMenu,

plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/FeatureDevSessionContextTest.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class FeatureDevSessionContextTest : FeatureDevTestBase(HeavyJavaCodeInsightTest
7575
@Test
7676
fun testZipProject() {
7777
addFilesToProjectModule(
78+
".gitignore",
7879
".gradle/cached.jar",
7980
"src/MyClass.java",
8081
"gradlew",
@@ -83,6 +84,19 @@ class FeatureDevSessionContextTest : FeatureDevTestBase(HeavyJavaCodeInsightTest
8384
"settings.gradle",
8485
"build.gradle",
8586
"gradle/wrapper/gradle-wrapper.properties",
87+
"builder/GetTestBuilder.java", // check for false positives
88+
".aws-sam/build/function1",
89+
".gem/specs.rb",
90+
"archive.zip",
91+
"output.bin",
92+
"images/logo.png",
93+
"assets/header.jpg",
94+
"icons/menu.svg",
95+
"license.txt",
96+
"License.md",
97+
"node_modules/express",
98+
"build/outputs",
99+
"dist/bundle.js"
86100
)
87101

88102
val zipResult = featureDevSessionContext.getProjectZip()
@@ -102,9 +116,10 @@ class FeatureDevSessionContextTest : FeatureDevTestBase(HeavyJavaCodeInsightTest
102116
"gradlew",
103117
"gradlew.bat",
104118
"README.md",
119+
"gradle/wrapper/gradle-wrapper.properties",
120+
"builder/GetTestBuilder.java",
105121
"settings.gradle",
106122
"build.gradle",
107-
"gradle/wrapper/gradle-wrapper.properties",
108123
)
109124

110125
assertTrue(zippedFiles == expectedFiles)

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codetest/sessionconfig/CodeTestSessionConfig.kt

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ class CodeTestSessionConfig(
141141
}
142142

143143
// 2. Add the "utgRequiredArtifactsDir" directory
144-
val utgDir = "utgRequiredArtifactsDir"
144+
val utgDir = "utgRequiredArtifactsDir/" // Note the trailing slash which adds it as a directory and not a file
145145
LOG.debug { "Adding directory to ZIP: $utgDir" }
146146
val utgEntry = ZipEntry(utgDir)
147147
it.putNextEntry(utgEntry)
@@ -150,7 +150,7 @@ class CodeTestSessionConfig(
150150
val buildAndExecuteLogDir = "buildAndExecuteLogDir"
151151
val subDirs = listOf(buildAndExecuteLogDir, "repoMapData", "testCoverageDir")
152152
subDirs.forEach { subDir ->
153-
val subDirPathString = Path.of(utgDir, subDir).name
153+
val subDirPathString = Path.of(utgDir, subDir).toString() + "/" // Added trailing slash similar to utgRequiredArtifactsDir
154154
LOG.debug { "Adding empty directory to ZIP: $subDirPathString" }
155155
val zipEntry = ZipEntry(subDirPathString)
156156
it.putNextEntry(zipEntry)
@@ -168,6 +168,18 @@ class CodeTestSessionConfig(
168168
var currentTotalLines = 0L
169169
val languageCounts = mutableMapOf<CodeWhispererProgrammingLanguage, Int>()
170170

171+
// Adding Target File to make sure target file doesn't get filtered out.
172+
selectedFile?.let { selected ->
173+
files.add(selected.path)
174+
currentTotalFileSize += selected.length
175+
currentTotalLines += countLinesInVirtualFile(selected)
176+
selected.programmingLanguage().let { language ->
177+
if (language !is CodeWhispererUnknownLanguage) {
178+
languageCounts[language] = (languageCounts[language] ?: 0) + 1
179+
}
180+
}
181+
}
182+
171183
moduleLoop@ for (module in project.modules) {
172184
val changeListManager = ChangeListManager.getInstance(module.project)
173185
if (module.guessModuleDir() != null) {
@@ -176,7 +188,8 @@ class CodeTestSessionConfig(
176188
val current = stack.pop()
177189

178190
if (!current.isDirectory) {
179-
if (current.isFile && !changeListManager.isIgnoredFile(current) &&
191+
if (current.isFile && current.path != selectedFile?.path &&
192+
!changeListManager.isIgnoredFile(current) &&
180193
runBlocking { !featureDevSessionContext.ignoreFile(current) } &&
181194
runReadAction { !fileIndex.isInLibrarySource(current) }
182195
) {

plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/FeatureDevSessionContext.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,6 @@ class FeatureDevSessionContext(val project: Project, val maxProjectSizeBytes: Lo
256256
.replace(".", "\\.")
257257
.replace("*", ".*")
258258
.let { if (it.endsWith("/")) "$it.*" else "$it/.*" } // Add a trailing /* to all patterns. (we add a trailing / to all files when matching)
259-
260259
var selectedSourceFolder: VirtualFile
261260
set(newRoot) {
262261
_selectedSourceFolder = newRoot

0 commit comments

Comments
 (0)