Skip to content

Commit f8fa131

Browse files
dhasani23David Hasani
and
David Hasani
authored
fix(amazonq): skip tests locally (#5401)
* fix(amazonq): skip tests locally * fix detekt --------- Co-authored-by: David Hasani <davhasan@amazon.com>
1 parent 7cc09f3 commit f8fa131

File tree

5 files changed

+44
-31
lines changed

5 files changed

+44
-31
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" : "/transform: skip running tests locally when user chooses to do so"
4+
}

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/constants/CodeTransformChatItems.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,14 +204,14 @@ private val selectSkipTestsFlagFormItem = FormItem(
204204
title = message("codemodernizer.chat.form.user_selection.item.choose_skip_tests_option"),
205205
mandatory = true,
206206
options = listOf(
207+
FormItemOption(
208+
label = message("codemodernizer.chat.message.skip_tests_form.skip"),
209+
value = message("codemodernizer.chat.message.skip_tests_form.skip"),
210+
),
207211
FormItemOption(
208212
label = message("codemodernizer.chat.message.skip_tests_form.run_tests"),
209213
value = message("codemodernizer.chat.message.skip_tests_form.run_tests"),
210214
),
211-
FormItemOption(
212-
label = message("codemodernizer.chat.message.skip_tests_form.skip"),
213-
value = message("codemodernizer.chat.message.skip_tests_form.skip"),
214-
)
215215
)
216216
)
217217

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -710,7 +710,7 @@ class CodeTransformChatController(
710710
else -> {
711711
if (result is CodeModernizerJobCompletedResult.ZipUploadFailed && result.failureReason is UploadFailureReason.CREDENTIALS_EXPIRED) {
712712
return
713-
} else {
713+
} else if (CodeModernizerSessionState.getInstance(context.project).currentJobId != null) {
714714
val downloadResult = artifactHandler.downloadArtifact(
715715
CodeModernizerSessionState.getInstance(context.project).currentJobId as JobId,
716716
TransformationDownloadArtifactType.CLIENT_INSTRUCTIONS

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/ideMaven/MavenRunnerUtils.kt

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import java.nio.file.Path
2727
fun runHilMavenCopyDependency(
2828
sourceFolder: File,
2929
destinationDir: File,
30-
buildlogBuilder: StringBuilder,
30+
logBuilder: StringBuilder,
3131
logger: Logger,
3232
project: Project,
3333
): MavenCopyCommandsResult {
@@ -39,13 +39,13 @@ fun runHilMavenCopyDependency(
3939

4040
// run copy dependencies
4141
val copyDependenciesRunnable =
42-
runMavenCopyDependencies(sourceFolder, buildlogBuilder, mvnSettings, transformMvnRunner, destinationDir.toPath(), logger)
42+
runMavenCopyDependencies(sourceFolder, logBuilder, mvnSettings, transformMvnRunner, destinationDir.toPath(), logger)
4343
copyDependenciesRunnable.await()
44-
buildlogBuilder.appendLine(copyDependenciesRunnable.getOutput())
44+
logBuilder.appendLine(copyDependenciesRunnable.getOutput())
4545
if (copyDependenciesRunnable.isComplete()) {
4646
val successMsg = "IntelliJ IDEA bundled Maven copy-dependencies executed successfully"
4747
logger.info { successMsg }
48-
buildlogBuilder.appendLine(successMsg)
48+
logBuilder.appendLine(successMsg)
4949
} else if (copyDependenciesRunnable.isTerminated()) {
5050
return MavenCopyCommandsResult.Cancelled
5151
}
@@ -57,7 +57,7 @@ fun runHilMavenCopyDependency(
5757
return MavenCopyCommandsResult.Success(destinationDir)
5858
}
5959

60-
fun runMavenCopyCommands(sourceFolder: File, buildlogBuilder: StringBuilder, logger: Logger, project: Project): MavenCopyCommandsResult {
60+
fun runMavenCopyCommands(sourceFolder: File, logBuilder: StringBuilder, logger: Logger, project: Project, shouldSkipTests: Boolean): MavenCopyCommandsResult {
6161
val currentTimestamp = System.currentTimeMillis()
6262
val destinationDir = Files.createTempDirectory("transformation_dependencies_temp_$currentTimestamp")
6363
val telemetry = CodeTransformTelemetryManager.getInstance(project)
@@ -79,13 +79,13 @@ fun runMavenCopyCommands(sourceFolder: File, buildlogBuilder: StringBuilder, log
7979

8080
// run copy dependencies
8181
val copyDependenciesRunnable =
82-
runMavenCopyDependencies(sourceFolder, buildlogBuilder, mvnSettings, transformMvnRunner, destinationDir, logger)
82+
runMavenCopyDependencies(sourceFolder, logBuilder, mvnSettings, transformMvnRunner, destinationDir, logger)
8383
copyDependenciesRunnable.await()
84-
buildlogBuilder.appendLine(copyDependenciesRunnable.getOutput())
84+
logBuilder.appendLine(copyDependenciesRunnable.getOutput())
8585
if (copyDependenciesRunnable.isComplete()) {
8686
val successMsg = "IntelliJ IDEA bundled Maven copy-dependencies executed successfully"
8787
logger.info { successMsg }
88-
buildlogBuilder.appendLine(successMsg)
88+
logBuilder.appendLine(successMsg)
8989
} else if (copyDependenciesRunnable.isTerminated()) {
9090
telemetryLocalBuildResult = Result.Cancelled
9191
return MavenCopyCommandsResult.Cancelled
@@ -94,13 +94,13 @@ fun runMavenCopyCommands(sourceFolder: File, buildlogBuilder: StringBuilder, log
9494
}
9595

9696
// Run clean
97-
val cleanRunnable = runMavenClean(sourceFolder, buildlogBuilder, mvnSettings, transformMvnRunner, logger, destinationDir)
97+
val cleanRunnable = runMavenClean(sourceFolder, logBuilder, mvnSettings, transformMvnRunner, logger, destinationDir)
9898
cleanRunnable.await()
99-
buildlogBuilder.appendLine(cleanRunnable.getOutput())
99+
logBuilder.appendLine(cleanRunnable.getOutput())
100100
if (cleanRunnable.isComplete()) {
101101
val successMsg = "IntelliJ bundled Maven clean executed successfully"
102102
logger.info { successMsg }
103-
buildlogBuilder.appendLine(successMsg)
103+
logBuilder.appendLine(successMsg)
104104
} else if (cleanRunnable.isTerminated()) {
105105
telemetryLocalBuildResult = Result.Cancelled
106106
return MavenCopyCommandsResult.Cancelled
@@ -112,13 +112,13 @@ fun runMavenCopyCommands(sourceFolder: File, buildlogBuilder: StringBuilder, log
112112
}
113113

114114
// Run install
115-
val installRunnable = runMavenInstall(sourceFolder, buildlogBuilder, mvnSettings, transformMvnRunner, logger, destinationDir)
115+
val installRunnable = runMavenInstall(sourceFolder, logBuilder, mvnSettings, transformMvnRunner, logger, destinationDir, shouldSkipTests)
116116
installRunnable.await()
117-
buildlogBuilder.appendLine(installRunnable.getOutput())
117+
logBuilder.appendLine(installRunnable.getOutput())
118118
if (installRunnable.isComplete()) {
119119
val successMsg = "IntelliJ bundled Maven install executed successfully"
120120
logger.info { successMsg }
121-
buildlogBuilder.appendLine(successMsg)
121+
logBuilder.appendLine(successMsg)
122122
} else if (installRunnable.isTerminated()) {
123123
telemetryLocalBuildResult = Result.Cancelled
124124
return MavenCopyCommandsResult.Cancelled
@@ -212,18 +212,24 @@ private fun runMavenClean(
212212

213213
private fun runMavenInstall(
214214
sourceFolder: File,
215-
buildlogBuilder: StringBuilder,
215+
logBuilder: StringBuilder,
216216
mvnSettings: MavenRunnerSettings,
217217
transformMavenRunner: TransformMavenRunner,
218218
logger: Logger,
219219
destinationDir: Path,
220+
shouldSkipTests: Boolean,
220221
): TransformRunnable {
221-
buildlogBuilder.appendLine("Command Run: IntelliJ IDEA bundled Maven install")
222+
logBuilder.appendLine("Command Run: IntelliJ IDEA bundled Maven install")
223+
val flags = if (shouldSkipTests) {
224+
listOf("-Dmaven.repo.local=$destinationDir", "install", "-DskipTests")
225+
} else {
226+
listOf("-Dmaven.repo.local=$destinationDir", "install")
227+
}
222228
val installParams = MavenRunnerParameters(
223229
false,
224230
sourceFolder.absolutePath,
225231
null,
226-
listOf("-Dmaven.repo.local=$destinationDir", "install"),
232+
flags,
227233
emptyList<String>(),
228234
null
229235
)
@@ -234,20 +240,20 @@ private fun runMavenInstall(
234240
} catch (t: Throwable) {
235241
logger.error(t) { "Maven Install: Unexpected error when executing bundled Maven install" }
236242
installTransformRunnable.setExitCode(Integer.MIN_VALUE) // to stop looking for the exitCode
237-
buildlogBuilder.appendLine("IntelliJ bundled Maven install failed: ${t.message}")
243+
logBuilder.appendLine("IntelliJ bundled Maven install failed: ${t.message}")
238244
}
239245
}
240246
return installTransformRunnable
241247
}
242248

243249
private fun runMavenDependencyUpdatesReport(
244250
sourceFolder: File,
245-
buildlogBuilder: StringBuilder,
251+
logBuilder: StringBuilder,
246252
mvnSettings: MavenRunnerSettings,
247253
transformMavenRunner: TransformMavenRunner,
248254
logger: Logger,
249255
): TransformRunnable {
250-
buildlogBuilder.appendLine("Command Run: IntelliJ IDEA bundled Maven dependency updates report")
256+
logBuilder.appendLine("Command Run: IntelliJ IDEA bundled Maven dependency updates report")
251257

252258
val dependencyUpdatesReportCommandList = listOf(
253259
"versions:dependency-updates-aggregate-report",
@@ -270,25 +276,25 @@ private fun runMavenDependencyUpdatesReport(
270276
} catch (t: Throwable) {
271277
logger.error(t) { "Maven dependency report: Unexpected error when executing bundled Maven dependency updates report" }
272278
dependencyUpdatesReportRunnable.setExitCode(Integer.MIN_VALUE) // to stop looking for the exitCode
273-
buildlogBuilder.appendLine("IntelliJ bundled Maven dependency updates report failed: ${t.message}")
279+
logBuilder.appendLine("IntelliJ bundled Maven dependency updates report failed: ${t.message}")
274280
}
275281
}
276282
return dependencyUpdatesReportRunnable
277283
}
278284

279-
fun runDependencyReportCommands(sourceFolder: File, buildlogBuilder: StringBuilder, logger: Logger, project: Project): MavenDependencyReportCommandsResult {
285+
fun runDependencyReportCommands(sourceFolder: File, logBuilder: StringBuilder, logger: Logger, project: Project): MavenDependencyReportCommandsResult {
280286
logger.info { "Executing IntelliJ bundled Maven" }
281287

282288
val transformMvnRunner = TransformMavenRunner(project)
283289
val mvnSettings = MavenRunner.getInstance(project).settings.clone() // clone required to avoid editing user settings
284290

285-
val runnable = runMavenDependencyUpdatesReport(sourceFolder, buildlogBuilder, mvnSettings, transformMvnRunner, logger)
291+
val runnable = runMavenDependencyUpdatesReport(sourceFolder, logBuilder, mvnSettings, transformMvnRunner, logger)
286292
runnable.await()
287-
buildlogBuilder.appendLine(runnable.getOutput())
293+
logBuilder.appendLine(runnable.getOutput())
288294
if (runnable.isComplete()) {
289295
val successMsg = "IntelliJ bundled Maven dependency report executed successfully"
290296
logger.info { successMsg }
291-
buildlogBuilder.appendLine(successMsg)
297+
logBuilder.appendLine(successMsg)
292298
} else if (runnable.isTerminated()) {
293299
return MavenDependencyReportCommandsResult.Cancelled
294300
} else {

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/CodeModernizerSessionContext.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,10 @@ data class CodeModernizerSessionContext(
9999
return excluded
100100
}
101101

102-
fun executeMavenCopyCommands(sourceFolder: File, buildLogBuilder: StringBuilder) = runMavenCopyCommands(sourceFolder, buildLogBuilder, LOG, project)
102+
fun executeMavenCopyCommands(sourceFolder: File, buildLogBuilder: StringBuilder): MavenCopyCommandsResult {
103+
val shouldSkipTests = customBuildCommand == MAVEN_BUILD_SKIP_UNIT_TESTS
104+
return runMavenCopyCommands(sourceFolder, buildLogBuilder, LOG, project, shouldSkipTests)
105+
}
103106

104107
private fun executeHilMavenCopyDependency(sourceFolder: File, destinationFolder: File, buildLogBuilder: StringBuilder) = runHilMavenCopyDependency(
105108
sourceFolder,

0 commit comments

Comments
 (0)