fixup! Add diagnostic for native version
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/KlibCrossCompilationNativeIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/KlibCrossCompilationNativeIT.kt index e740010..7eb474a 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/KlibCrossCompilationNativeIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/KlibCrossCompilationNativeIT.kt
@@ -58,7 +58,7 @@ ) { build(":compileKotlinIosArm64") { KotlinTestUtils.assertEqualsToFile( - projectPath.resolve("diagnostics-compileKotlinIosArm64.txt"), extractProjectsAndTheirDiagnostics() + projectPath.resolve("diagnostics-compileKotlinIosArm64.txt"), extractProjectsAndTheirDiagnostics(buildOptions.kotlinVersion, buildOptions.nativeOptions.version) ) assertTasksExecuted(":compileKotlinIosArm64") }
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/diagnosticsAssertions.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/diagnosticsAssertions.kt index d1f7f3b..f7e0af2 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/diagnosticsAssertions.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/diagnosticsAssertions.kt
@@ -64,75 +64,78 @@ * [org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics.InternalKotlinGradlePluginPropertiesUsed]. * For the sake of clarity, this diagnostic is filtered by default. */ -fun BuildResult.extractProjectsAndTheirDiagnostics(): String = buildString { - var diagnosticStarted = false - var stacktraceStarted = false - val currentDiagnostic = mutableListOf<String>() +fun BuildResult.extractProjectsAndTheirDiagnostics(kotlinVersion: String? = null, kotlinNativeVersion: String? = null): String = + buildString { + var diagnosticStarted = false + var stacktraceStarted = false + val currentDiagnostic = mutableListOf<String>() - fun startDiagnostic(line: String, lineIndex: Int) { - require(!diagnosticStarted) { - printBuildOutput() - "Unexpected start of diagnostic $line on line ${lineIndex + 1}. The end of the previous diagnostic wasn't found yet" - } - - currentDiagnostic += line - diagnosticStarted = true - } - - fun continueDiagnostic(line: String) { - when { - line == KOTLIN_DIAGNOSTIC_STACKTRACE_START -> { - stacktraceStarted = true - currentDiagnostic += line - currentDiagnostic += DIAGNOSTIC_STACKTRACE_REPLACEMENT_STUB + fun startDiagnostic(line: String, lineIndex: Int) { + require(!diagnosticStarted) { + printBuildOutput() + "Unexpected start of diagnostic $line on line ${lineIndex + 1}. The end of the previous diagnostic wasn't found yet" } - line == KOTLIN_DIAGNOSTIC_STACKTRACE_END_SEPARATOR -> { - stacktraceStarted = false - } - - stacktraceStarted -> return // Omit stacktrace lines for tests stability - - else -> currentDiagnostic += line - } - } - - fun endDiagnostic(line: String, lineIndex: Int) { - require(diagnosticStarted) { - printBuildOutput() - "Unexpected end of diagnostic $line on line ${lineIndex + 1}" + var lineWithPlaceHolders = kotlinVersion?.let { line.replace(it, "<kotlin_version>") } ?: line + lineWithPlaceHolders = kotlinNativeVersion?.let { line.replace(it, "<kotlin_native_version>") } ?: lineWithPlaceHolders + currentDiagnostic += lineWithPlaceHolders + diagnosticStarted = true } - currentDiagnostic += line + fun continueDiagnostic(line: String) { + when { + line == KOTLIN_DIAGNOSTIC_STACKTRACE_START -> { + stacktraceStarted = true + currentDiagnostic += line + currentDiagnostic += DIAGNOSTIC_STACKTRACE_REPLACEMENT_STUB + } - if (KotlinToolingDiagnostics.InternalKotlinGradlePluginPropertiesUsed.id in currentDiagnostic.first()) { - val cleanedDiagnostic = filterKgpUtilityPropertiesFromDiagnostic(currentDiagnostic) - if (cleanedDiagnostic.isNotEmpty()) appendLine(cleanedDiagnostic.joinToString(separator = "\n", postfix = "\n")) - } else { - appendLine(currentDiagnostic.joinToString(separator = "\n", postfix = "\n")) - } + line == KOTLIN_DIAGNOSTIC_STACKTRACE_END_SEPARATOR -> { + stacktraceStarted = false + } - currentDiagnostic.clear() - diagnosticStarted = false - } + stacktraceStarted -> return // Omit stacktrace lines for tests stability - - for ((index, line) in output.lines().withIndex()) { - when { - line.trim() == VERBOSE_DIAGNOSTIC_SEPARATOR -> endDiagnostic(line, index) - - DIAGNOSTIC_START_REGEX.containsMatchIn(line) -> startDiagnostic(line, index) - - diagnosticStarted -> continueDiagnostic(line) - - line.startsWith(CONFIGURE_PROJECT_PREFIX) - || (line.contains(ENSURE_NO_KOTLIN_GRADLE_PLUGIN_ERRORS_TASK_NAME) && line.startsWith(TASK_EXECUTION_PREFIX)) -> { - appendLine() // additional empty line between projects - appendLine(line) + else -> currentDiagnostic += line } } - } -}.trim() + + fun endDiagnostic(line: String, lineIndex: Int) { + require(diagnosticStarted) { + printBuildOutput() + "Unexpected end of diagnostic $line on line ${lineIndex + 1}" + } + + currentDiagnostic += line + + if (KotlinToolingDiagnostics.InternalKotlinGradlePluginPropertiesUsed.id in currentDiagnostic.first()) { + val cleanedDiagnostic = filterKgpUtilityPropertiesFromDiagnostic(currentDiagnostic) + if (cleanedDiagnostic.isNotEmpty()) appendLine(cleanedDiagnostic.joinToString(separator = "\n", postfix = "\n")) + } else { + appendLine(currentDiagnostic.joinToString(separator = "\n", postfix = "\n")) + } + + currentDiagnostic.clear() + diagnosticStarted = false + } + + + for ((index, line) in output.lines().withIndex()) { + when { + line.trim() == VERBOSE_DIAGNOSTIC_SEPARATOR -> endDiagnostic(line, index) + + DIAGNOSTIC_START_REGEX.containsMatchIn(line) -> startDiagnostic(line, index) + + diagnosticStarted -> continueDiagnostic(line) + + line.startsWith(CONFIGURE_PROJECT_PREFIX) + || (line.contains(ENSURE_NO_KOTLIN_GRADLE_PLUGIN_ERRORS_TASK_NAME) && line.startsWith(TASK_EXECUTION_PREFIX)) -> { + appendLine() // additional empty line between projects + appendLine(line) + } + } + } + }.trim() /** * Filters from the report all internal utility-properties that KGP uses in tests.
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/klibCrossCompilationWithGradlePropertyEnabled/diagnostics-compileKotlinIosArm64.txt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/klibCrossCompilationWithGradlePropertyEnabled/diagnostics-compileKotlinIosArm64.txt index ee8c200..ebbf192 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/klibCrossCompilationWithGradlePropertyEnabled/diagnostics-compileKotlinIosArm64.txt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/klibCrossCompilationWithGradlePropertyEnabled/diagnostics-compileKotlinIosArm64.txt
@@ -1,5 +1,6 @@ > Configure project : -w: [OldNativeVersionDiagnostic | WARNING] '2.0.20' Kotlin Native is being used with an newer '2.1.0-RC-212' Kotlin. Please adjust versions to avoid incompatibilities. +w: [OldNativeVersionDiagnostic | WARNING] '<kotlin_native_version>' Kotlin Native is being used with an newer '<kotlin_version>' Kotlin. Please adjust versions to avoid incompatibilities. #diagnostic-end -> Task :checkKotlinGradlePluginConfigurationErrors SKIPPED + +> Task :checkKotlinGradlePluginConfigurationErrors SKIPPED \ No newline at end of file