Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"type" : "bugfix",
"description" : "/transform: skip running tests locally when user chooses to do so"
}
Original file line number Diff line number Diff line change
Expand Up @@ -204,14 +204,14 @@ private val selectSkipTestsFlagFormItem = FormItem(
title = message("codemodernizer.chat.form.user_selection.item.choose_skip_tests_option"),
mandatory = true,
options = listOf(
FormItemOption(
label = message("codemodernizer.chat.message.skip_tests_form.skip"),
value = message("codemodernizer.chat.message.skip_tests_form.skip"),
),
FormItemOption(
label = message("codemodernizer.chat.message.skip_tests_form.run_tests"),
value = message("codemodernizer.chat.message.skip_tests_form.run_tests"),
),
FormItemOption(
label = message("codemodernizer.chat.message.skip_tests_form.skip"),
value = message("codemodernizer.chat.message.skip_tests_form.skip"),
)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just switch the order of these 2 options so that "skip tests" is the default

)
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,7 @@ class CodeTransformChatController(
else -> {
if (result is CodeModernizerJobCompletedResult.ZipUploadFailed && result.failureReason is UploadFailureReason.CREDENTIALS_EXPIRED) {
return
} else {
} else if (CodeModernizerSessionState.getInstance(context.project).currentJobId != null) {
val downloadResult = artifactHandler.downloadArtifact(
CodeModernizerSessionState.getInstance(context.project).currentJobId as JobId,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before attempting download, make sure that a job ID exists (job may not have started otherwise, so nothing to download)

TransformationDownloadArtifactType.CLIENT_INSTRUCTIONS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import java.nio.file.Path
fun runHilMavenCopyDependency(
sourceFolder: File,
destinationDir: File,
buildlogBuilder: StringBuilder,
logBuilder: StringBuilder,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got a detekt error elsewhere because a line was too long, so just shortened this name everywhere in this file

logger: Logger,
project: Project,
): MavenCopyCommandsResult {
Expand All @@ -39,13 +39,13 @@ fun runHilMavenCopyDependency(

// run copy dependencies
val copyDependenciesRunnable =
runMavenCopyDependencies(sourceFolder, buildlogBuilder, mvnSettings, transformMvnRunner, destinationDir.toPath(), logger)
runMavenCopyDependencies(sourceFolder, logBuilder, mvnSettings, transformMvnRunner, destinationDir.toPath(), logger)
copyDependenciesRunnable.await()
buildlogBuilder.appendLine(copyDependenciesRunnable.getOutput())
logBuilder.appendLine(copyDependenciesRunnable.getOutput())
if (copyDependenciesRunnable.isComplete()) {
val successMsg = "IntelliJ IDEA bundled Maven copy-dependencies executed successfully"
logger.info { successMsg }
buildlogBuilder.appendLine(successMsg)
logBuilder.appendLine(successMsg)
} else if (copyDependenciesRunnable.isTerminated()) {
return MavenCopyCommandsResult.Cancelled
}
Expand All @@ -57,7 +57,7 @@ fun runHilMavenCopyDependency(
return MavenCopyCommandsResult.Success(destinationDir)
}

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

// run copy dependencies
val copyDependenciesRunnable =
runMavenCopyDependencies(sourceFolder, buildlogBuilder, mvnSettings, transformMvnRunner, destinationDir, logger)
runMavenCopyDependencies(sourceFolder, logBuilder, mvnSettings, transformMvnRunner, destinationDir, logger)
copyDependenciesRunnable.await()
buildlogBuilder.appendLine(copyDependenciesRunnable.getOutput())
logBuilder.appendLine(copyDependenciesRunnable.getOutput())
if (copyDependenciesRunnable.isComplete()) {
val successMsg = "IntelliJ IDEA bundled Maven copy-dependencies executed successfully"
logger.info { successMsg }
buildlogBuilder.appendLine(successMsg)
logBuilder.appendLine(successMsg)
} else if (copyDependenciesRunnable.isTerminated()) {
telemetryLocalBuildResult = Result.Cancelled
return MavenCopyCommandsResult.Cancelled
Expand All @@ -94,13 +94,13 @@ fun runMavenCopyCommands(sourceFolder: File, buildlogBuilder: StringBuilder, log
}

// Run clean
val cleanRunnable = runMavenClean(sourceFolder, buildlogBuilder, mvnSettings, transformMvnRunner, logger, destinationDir)
val cleanRunnable = runMavenClean(sourceFolder, logBuilder, mvnSettings, transformMvnRunner, logger, destinationDir)
cleanRunnable.await()
buildlogBuilder.appendLine(cleanRunnable.getOutput())
logBuilder.appendLine(cleanRunnable.getOutput())
if (cleanRunnable.isComplete()) {
val successMsg = "IntelliJ bundled Maven clean executed successfully"
logger.info { successMsg }
buildlogBuilder.appendLine(successMsg)
logBuilder.appendLine(successMsg)
} else if (cleanRunnable.isTerminated()) {
telemetryLocalBuildResult = Result.Cancelled
return MavenCopyCommandsResult.Cancelled
Expand All @@ -112,13 +112,13 @@ fun runMavenCopyCommands(sourceFolder: File, buildlogBuilder: StringBuilder, log
}

// Run install
val installRunnable = runMavenInstall(sourceFolder, buildlogBuilder, mvnSettings, transformMvnRunner, logger, destinationDir)
val installRunnable = runMavenInstall(sourceFolder, logBuilder, mvnSettings, transformMvnRunner, logger, destinationDir, shouldSkipTests)
installRunnable.await()
buildlogBuilder.appendLine(installRunnable.getOutput())
logBuilder.appendLine(installRunnable.getOutput())
if (installRunnable.isComplete()) {
val successMsg = "IntelliJ bundled Maven install executed successfully"
logger.info { successMsg }
buildlogBuilder.appendLine(successMsg)
logBuilder.appendLine(successMsg)
} else if (installRunnable.isTerminated()) {
telemetryLocalBuildResult = Result.Cancelled
return MavenCopyCommandsResult.Cancelled
Expand Down Expand Up @@ -212,18 +212,24 @@ private fun runMavenClean(

private fun runMavenInstall(
sourceFolder: File,
buildlogBuilder: StringBuilder,
logBuilder: StringBuilder,
mvnSettings: MavenRunnerSettings,
transformMavenRunner: TransformMavenRunner,
logger: Logger,
destinationDir: Path,
shouldSkipTests: Boolean,
): TransformRunnable {
buildlogBuilder.appendLine("Command Run: IntelliJ IDEA bundled Maven install")
logBuilder.appendLine("Command Run: IntelliJ IDEA bundled Maven install")
val flags = if (shouldSkipTests) {
listOf("-Dmaven.repo.local=$destinationDir", "install", "-DskipTests")
} else {
listOf("-Dmaven.repo.local=$destinationDir", "install")
}
val installParams = MavenRunnerParameters(
false,
sourceFolder.absolutePath,
null,
listOf("-Dmaven.repo.local=$destinationDir", "install"),
flags,
emptyList<String>(),
null
)
Expand All @@ -234,20 +240,20 @@ private fun runMavenInstall(
} catch (t: Throwable) {
logger.error(t) { "Maven Install: Unexpected error when executing bundled Maven install" }
installTransformRunnable.setExitCode(Integer.MIN_VALUE) // to stop looking for the exitCode
buildlogBuilder.appendLine("IntelliJ bundled Maven install failed: ${t.message}")
logBuilder.appendLine("IntelliJ bundled Maven install failed: ${t.message}")
}
}
return installTransformRunnable
}

private fun runMavenDependencyUpdatesReport(
sourceFolder: File,
buildlogBuilder: StringBuilder,
logBuilder: StringBuilder,
mvnSettings: MavenRunnerSettings,
transformMavenRunner: TransformMavenRunner,
logger: Logger,
): TransformRunnable {
buildlogBuilder.appendLine("Command Run: IntelliJ IDEA bundled Maven dependency updates report")
logBuilder.appendLine("Command Run: IntelliJ IDEA bundled Maven dependency updates report")

val dependencyUpdatesReportCommandList = listOf(
"versions:dependency-updates-aggregate-report",
Expand All @@ -270,25 +276,25 @@ private fun runMavenDependencyUpdatesReport(
} catch (t: Throwable) {
logger.error(t) { "Maven dependency report: Unexpected error when executing bundled Maven dependency updates report" }
dependencyUpdatesReportRunnable.setExitCode(Integer.MIN_VALUE) // to stop looking for the exitCode
buildlogBuilder.appendLine("IntelliJ bundled Maven dependency updates report failed: ${t.message}")
logBuilder.appendLine("IntelliJ bundled Maven dependency updates report failed: ${t.message}")
}
}
return dependencyUpdatesReportRunnable
}

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

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

val runnable = runMavenDependencyUpdatesReport(sourceFolder, buildlogBuilder, mvnSettings, transformMvnRunner, logger)
val runnable = runMavenDependencyUpdatesReport(sourceFolder, logBuilder, mvnSettings, transformMvnRunner, logger)
runnable.await()
buildlogBuilder.appendLine(runnable.getOutput())
logBuilder.appendLine(runnable.getOutput())
if (runnable.isComplete()) {
val successMsg = "IntelliJ bundled Maven dependency report executed successfully"
logger.info { successMsg }
buildlogBuilder.appendLine(successMsg)
logBuilder.appendLine(successMsg)
} else if (runnable.isTerminated()) {
return MavenDependencyReportCommandsResult.Cancelled
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,10 @@ data class CodeModernizerSessionContext(
return excluded
}

fun executeMavenCopyCommands(sourceFolder: File, buildLogBuilder: StringBuilder) = runMavenCopyCommands(sourceFolder, buildLogBuilder, LOG, project)
fun executeMavenCopyCommands(sourceFolder: File, buildLogBuilder: StringBuilder): MavenCopyCommandsResult {
val shouldSkipTests = customBuildCommand == MAVEN_BUILD_SKIP_UNIT_TESTS
return runMavenCopyCommands(sourceFolder, buildLogBuilder, LOG, project, shouldSkipTests)
}

private fun executeHilMavenCopyDependency(sourceFolder: File, destinationFolder: File, buildLogBuilder: StringBuilder) = runHilMavenCopyDependency(
sourceFolder,
Expand Down
Loading