[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
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 3decf8f..0000000
--- 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 7e3effc..7951c0e 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 @@
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 @@
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 5eb907c..4e28c7b 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 @@
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<Directory>
@@ -55,7 +54,6 @@
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 eb6c6b5..789a229 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 @@
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 @@
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 505f743..89ac12e 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 @@
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<RequiredKotlinJsDependency>
@@ -396,7 +394,6 @@
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 1a171d1..c62559b 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 @@
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<Directory>
@@ -65,7 +64,6 @@
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 4101b2b..66fb9bb 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 @@
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.