From a065b7adf8f3cbba929225f89a0a3b175451078c Mon Sep 17 00:00:00 2001 From: "Alexander.Likhachev" Date: Thu, 25 Jan 2024 15:06:38 +0100 Subject: [PATCH] [Gradle] Escape TC service messages in debug logs unconditionally Those messages are not required for the real TC reporting. They are printed just for debugging purposes of integration with K/N and K/JS test runners. ^KT-65295 Fixed --- .../testProject/native-tests/gradle.properties | 2 -- .../internal/testing/TCServiceMessagesClient.kt | 12 ++++-------- .../kotlin/gradle/targets/js/testing/KotlinWasmD8.kt | 2 -- .../gradle/targets/js/testing/KotlinWasmNode.kt | 2 -- .../gradle/targets/js/testing/karma/KotlinKarma.kt | 3 --- .../gradle/targets/js/testing/mocha/KotlinMocha.kt | 2 -- .../gradle/targets/native/tasks/KotlinNativeTest.kt | 1 - 7 files changed, 4 insertions(+), 20 deletions(-) delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-tests/gradle.properties diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-tests/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-tests/gradle.properties deleted file mode 100644 index 3decf8fd865..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-tests/gradle.properties +++ /dev/null @@ -1,2 +0,0 @@ -# Enable escaping TC service messages in logs. -teamcity=true \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/testing/TCServiceMessagesClient.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/testing/TCServiceMessagesClient.kt index 7e3effcf278..7951c0e4089 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/testing/TCServiceMessagesClient.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/testing/TCServiceMessagesClient.kt @@ -30,7 +30,6 @@ data class TCServiceMessagesClientSettings( val stackTraceParser: (String) -> ParsedStackTrace? = { null }, val ignoreOutOfRootNodes: Boolean = false, val ignoreLineEndingAfterMessage: Boolean = true, - val escapeTCMessagesInLog: Boolean = false ) internal open class TCServiceMessagesClient( @@ -61,14 +60,11 @@ internal open class TCServiceMessagesClient( override fun serviceMessage(message: ServiceMessage) { - // If a user uses TeamCity, this log may be treated by TC as an actual service message. - // So, escape logged messages if the corresponding setting is specified. log.kotlinDebug { - val messageString = if (settings.escapeTCMessagesInLog) { - message.toString().replaceFirst("^##teamcity\\[".toRegex(), "##TC[") - } else { - message.toString() - } + // If a user uses TeamCity, TC may treat this log as an actual service message. + // This message should be considered implementation detail and shouldn't be exposed "as is". + // At this stage it's already parsed correctly, and it's safe to escape it. + val messageString = message.toString().replaceFirst("^##teamcity\\[".toRegex(), "##TC[") "TCSM: $messageString" } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmD8.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmD8.kt index 5eb907c6165..4e28c7b86dc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmD8.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmD8.kt @@ -32,7 +32,6 @@ internal class KotlinWasmD8(private val kotlinJsTest: KotlinJsTest) : KotlinJsTe private val d8 = D8RootPlugin.apply(project.rootProject) private val d8Executable by project.provider { d8.requireConfigured().executablePath } - private val isTeamCity = project.providers.gradleProperty(TCServiceMessagesTestExecutor.TC_PROJECT_PROPERTY) private val npmProjectDir by project.provider { compilation.npmProject.dir } override val workingDir: Provider @@ -55,7 +54,6 @@ internal class KotlinWasmD8(private val kotlinJsTest: KotlinJsTest) : KotlinJsTe prependSuiteName = true, stackTraceParser = ::parseNodeJsStackTraceAsJvm, ignoreOutOfRootNodes = true, - escapeTCMessagesInLog = isTeamCity.isPresent ) val cliArgs = KotlinTestRunnerCliArgs( diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmNode.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmNode.kt index eb6c6b50a18..789a2294087 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmNode.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmNode.kt @@ -28,7 +28,6 @@ internal class KotlinWasmNode(private val kotlinJsTest: KotlinJsTest) : KotlinJs override val settingsState: String = "KotlinWasmNode" @Transient override val compilation: KotlinJsIrCompilation = kotlinJsTest.compilation - private val isTeamCity = compilation.target.project.providers.gradleProperty(TCServiceMessagesTestExecutor.TC_PROJECT_PROPERTY) @Transient private val target: KotlinJsIrTarget = compilation.target as KotlinJsIrTarget @@ -63,7 +62,6 @@ internal class KotlinWasmNode(private val kotlinJsTest: KotlinJsTest) : KotlinJs prependSuiteName = true, stackTraceParser = ::parseNodeJsStackTraceAsJvm, ignoreOutOfRootNodes = true, - escapeTCMessagesInLog = isTeamCity.isPresent ) val cliArgs = KotlinTestRunnerCliArgs( diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt index 505f743cf59..89ac12e2717 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt @@ -72,8 +72,6 @@ class KotlinKarma( private var configDirectory: File by property { defaultConfigDirectory } - private val isTeamCity = project.providers.gradleProperty(TCServiceMessagesTestExecutor.TC_PROJECT_PROPERTY) - private val npmProjectDir by project.provider { npmProject.dir } override val requiredNpmDependencies: Set @@ -396,7 +394,6 @@ class KotlinKarma( prependSuiteName = true, stackTraceParser = ::parseNodeJsStackTraceAsJvm, ignoreOutOfRootNodes = true, - escapeTCMessagesInLog = isTeamCity.isPresent ) config.basePath = npmProjectDir.getFile().absolutePath diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt index 1a171d12da5..c62559bbb81 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt @@ -31,7 +31,6 @@ class KotlinMocha(@Transient override val compilation: KotlinJsIrCompilation, pr private val project: Project = compilation.target.project private val npmProject = compilation.npmProject private val versions = project.rootProject.kotlinNodeJsExtension.versions - private val isTeamCity = project.providers.gradleProperty(TCServiceMessagesTestExecutor.TC_PROJECT_PROPERTY) private val npmProjectDir by project.provider { npmProject.dir } override val workingDir: Provider @@ -65,7 +64,6 @@ class KotlinMocha(@Transient override val compilation: KotlinJsIrCompilation, pr prependSuiteName = true, stackTraceParser = ::parseNodeJsStackTraceAsJvm, ignoreOutOfRootNodes = true, - escapeTCMessagesInLog = isTeamCity.isPresent ) val cliArgs = KotlinTestRunnerCliArgs( diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTest.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTest.kt index 4101b2b41b2..66fb9bb79f0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTest.kt @@ -144,7 +144,6 @@ abstract class KotlinNativeTest : KotlinTest() { prependSuiteName = targetName != null, treatFailedTestOutputAsStacktrace = false, stackTraceParser = ::parseKotlinNativeStackTraceAsJvm, - escapeTCMessagesInLog = providerFactory.gradleProperty(TC_PROJECT_PROPERTY).isPresent ) // The KotlinTest expects that the exit code is zero even if some tests failed.