KT-57224: Add kotlin language version to file report

This commit is contained in:
Nataliya.Valtman
2023-05-04 00:22:17 +02:00
committed by Space Team
parent 3deea96b53
commit f87fdb43fa
4 changed files with 66 additions and 18 deletions
@@ -278,6 +278,12 @@ class FileReportService(
p.println("Task '${statisticsData.taskName}' finished in ${formatTime(statisticsData.durationMs)}")
}
statisticsData.kotlinLanguageVersion?.also {
p.withIndent("Task info:") {
p.println("Kotlin language version: $it")
}
}
if (statisticsData.icLogLines.isNotEmpty()) {
p.withIndent("Compilation log for task '${statisticsData.taskName}':") {
statisticsData.icLogLines.forEach { p.println(it) }
@@ -55,6 +55,7 @@ dependencies {
}
}
testImplementation(project(":kotlin-gradle-compiler-types"))
testImplementation(project(":kotlin-gradle-plugin-idea"))
testImplementation(testFixtures(project(":kotlin-gradle-plugin-idea")))
testImplementation(project(":kotlin-gradle-plugin-idea-proto"))
@@ -15,6 +15,7 @@ import java.io.ObjectInputStream
import java.nio.file.Path
import kotlin.io.path.*
import kotlin.test.assertTrue
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
@DisplayName("Build reports")
@JvmGradlePluginTests
@@ -54,28 +55,67 @@ class BuildReportsIT : KGPBaseTest() {
@DisplayName("Build metrics produces valid report")
@GradleTest
fun testBuildMetricsSmokeTest(gradleVersion: GradleVersion) {
project("simpleProject", gradleVersion) {
build("assemble") {
testBuildReportInFile("simpleProject", "assemble", gradleVersion)
}
@DisplayName("Build metrics produces valid report for mpp-jvm")
@GradleTest
fun testBuildMetricsForMppJvm(gradleVersion: GradleVersion) {
testBuildReportInFile("mppJvmWithJava", "assemble", gradleVersion)
}
@DisplayName("Build metrics produces valid report for mpp-js")
@GradleTest
fun testBuildMetricsForMppJs(gradleVersion: GradleVersion) {
testBuildReportInFile("kotlin-js-package-module-name", "assemble", gradleVersion)
}
@DisplayName("Build metrics produces valid report for JS project")
@GradleTest
fun testBuildMetricsForJsProject(gradleVersion: GradleVersion) {
testBuildReportInFile("kotlin-js-plugin-project", "compileKotlinJs", gradleVersion,
languageVersion = KotlinVersion.KOTLIN_1_7.version)
}
private fun testBuildReportInFile(project: String, task: String, gradleVersion: GradleVersion,
languageVersion: String = KotlinVersion.KOTLIN_2_0.version) {
project(project, gradleVersion) {
build(task) {
assertBuildReportPathIsPrinted()
}
//Should contains build metrics for all compile kotlin tasks
assertFileContains(
reportFile,
"Time metrics:",
"Run compilation:",
"Incremental compilation in daemon:",
"Size metrics:",
"Total size of the cache directory:",
"Total compiler iteration:",
"ABI snapshot size:",
//for non-incremental builds
"Build attributes:",
"REBUILD_REASON:",
//gc metrics
"GC count:",
"GC time:",
)
validateBuildReportFile(KotlinVersion.DEFAULT.version)
}
project(project, gradleVersion, buildOptions = defaultBuildOptions.copy(languageVersion = languageVersion)) {
build(task, buildOptions = buildOptions.copy(languageVersion = languageVersion)) {
assertBuildReportPathIsPrinted()
}
//Should contains build metrics for all compile kotlin tasks
validateBuildReportFile(languageVersion)
}
}
private fun TestProject.validateBuildReportFile(kotlinLanguageVersion: String) {
assertFileContains(
reportFile,
"Time metrics:",
"Run compilation:",
"Incremental compilation in daemon:",
"Size metrics:",
"Total size of the cache directory:",
"Total compiler iteration:",
"ABI snapshot size:",
//for non-incremental builds
"Build attributes:",
"REBUILD_REASON:",
//gc metrics
"GC count:",
"GC time:",
//task info
"Task info:",
"Kotlin language version: $kotlinLanguageVersion",
)
}
@DisplayName("Compiler build metrics report is produced")
@@ -565,6 +565,7 @@ internal fun Path.enableAndroidSdk() {
applyAndroidTestFixes()
}
internal fun Path.enableCacheRedirector() {
// Path relative to the current gradle module project dir
val redirectorScript = Paths.get("../../../repo/scripts/cache-redirector.settings.gradle.kts")