From 8a5fc2ad2942320f02e6c0266c003cecc2942a35 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 9 Dec 2020 15:06:03 +0300 Subject: [PATCH] [Build] Split `:tests-mutes` package to common and TC integration parts This is needed because of following problem: - :tests-mutes has `implementation` dependency on khttp library - khttp has dependency on spek-junit-platform-engine library - :tests-common had `testCompile` dependency on :tests-mutes which added spek library as as a dependency to all modules which depend on :tests-common, including :tests-common-new Then, if project is configured with JPS then if user tries to run all tests in directory in module which uses JUnit 5 (like :tests-common-new) then spek library will be added to classpath and junit runner takes some platform extension from it which causes NoSuchMethodException because spek library was compiled against outdated JUnit 5 version and current version doesn't have some API. So splitting :tests-mutes for two parts fixes this issue, because common part (:compiler:tests-mutes) no longer depends on khttp, so spek library doesn't spreads to all modules --- build.gradle.kts | 2 +- compiler/tests-mutes/build.gradle.kts | 17 +----------- .../jetbrains/kotlin/test/mutes/MutedTest.kt | 2 +- .../tc-integration/build.gradle.kts | 27 +++++++++++++++++++ .../kotlin/test/mutes/MutedTestToJson.kt | 0 .../kotlin/test/mutes/MutedTestsSync.kt | 0 .../kotlin/test/mutes/TeamCityInteraction.kt | 0 settings.gradle | 1 + 8 files changed, 31 insertions(+), 18 deletions(-) create mode 100644 compiler/tests-mutes/tc-integration/build.gradle.kts rename compiler/tests-mutes/{ => tc-integration}/src/org/jetbrains/kotlin/test/mutes/MutedTestToJson.kt (100%) rename compiler/tests-mutes/{ => tc-integration}/src/org/jetbrains/kotlin/test/mutes/MutedTestsSync.kt (100%) rename compiler/tests-mutes/{ => tc-integration}/src/org/jetbrains/kotlin/test/mutes/TeamCityInteraction.kt (100%) diff --git a/build.gradle.kts b/build.gradle.kts index a0b9592cbf6..af636074a10 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -569,7 +569,7 @@ val dist = tasks.register("dist") { } val syncMutedTests = tasks.register("syncMutedTests") { - dependsOn(":compiler:tests-mutes:run") + dependsOn(":compiler:tests-mutes:tc-integration:run") } val copyCompilerToIdeaPlugin by task { diff --git a/compiler/tests-mutes/build.gradle.kts b/compiler/tests-mutes/build.gradle.kts index 69a4f6bbdca..019f8afe976 100644 --- a/compiler/tests-mutes/build.gradle.kts +++ b/compiler/tests-mutes/build.gradle.kts @@ -1,28 +1,13 @@ plugins { kotlin("jvm") id("jps-compatible") - application } dependencies { api(kotlinStdlib()) - implementation("khttp:khttp:1.0.0") - implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.11.0") } sourceSets { - "main" { - projectDefault() - } + "main" { projectDefault() } "test" {} } - -val compileKotlin: org.jetbrains.kotlin.gradle.tasks.KotlinCompile by tasks -compileKotlin.kotlinOptions.freeCompilerArgs += "-Xskip-runtime-version-check" - -val mutesPackageName = "org.jetbrains.kotlin.test.mutes" - -application { - mainClassName = "$mutesPackageName.MutedTestsSyncKt" - applicationDefaultJvmArgs = rootProject.properties.filterKeys { it.startsWith(mutesPackageName) }.map { (k, v) -> "-D$k=$v" } -} diff --git a/compiler/tests-mutes/src/org/jetbrains/kotlin/test/mutes/MutedTest.kt b/compiler/tests-mutes/src/org/jetbrains/kotlin/test/mutes/MutedTest.kt index 995336146c0..d821fd41fd6 100644 --- a/compiler/tests-mutes/src/org/jetbrains/kotlin/test/mutes/MutedTest.kt +++ b/compiler/tests-mutes/src/org/jetbrains/kotlin/test/mutes/MutedTest.kt @@ -92,4 +92,4 @@ private fun parseMutedTest(str: String): MutedTest { private class ParseError(message: String, override val cause: Throwable? = null) : IllegalArgumentException(message) -internal fun flakyTests(file: File) = loadMutedTests(file).filter { it.isFlaky } \ No newline at end of file +fun flakyTests(file: File): List = loadMutedTests(file).filter { it.isFlaky } diff --git a/compiler/tests-mutes/tc-integration/build.gradle.kts b/compiler/tests-mutes/tc-integration/build.gradle.kts new file mode 100644 index 00000000000..72ba12d6923 --- /dev/null +++ b/compiler/tests-mutes/tc-integration/build.gradle.kts @@ -0,0 +1,27 @@ +plugins { + kotlin("jvm") + id("jps-compatible") + application +} + +dependencies { + api(kotlinStdlib()) + implementation(project(":compiler:tests-mutes")) + implementation("khttp:khttp:1.0.0") + implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.11.0") +} + +sourceSets { + "main" { projectDefault() } + "test" {} +} + +val compileKotlin: org.jetbrains.kotlin.gradle.tasks.KotlinCompile by tasks +compileKotlin.kotlinOptions.freeCompilerArgs += "-Xskip-runtime-version-check" + +val mutesPackageName = "org.jetbrains.kotlin.test.mutes" + +application { + mainClassName = "$mutesPackageName.MutedTestsSyncKt" + applicationDefaultJvmArgs = rootProject.properties.filterKeys { it.startsWith(mutesPackageName) }.map { (k, v) -> "-D$k=$v" } +} diff --git a/compiler/tests-mutes/src/org/jetbrains/kotlin/test/mutes/MutedTestToJson.kt b/compiler/tests-mutes/tc-integration/src/org/jetbrains/kotlin/test/mutes/MutedTestToJson.kt similarity index 100% rename from compiler/tests-mutes/src/org/jetbrains/kotlin/test/mutes/MutedTestToJson.kt rename to compiler/tests-mutes/tc-integration/src/org/jetbrains/kotlin/test/mutes/MutedTestToJson.kt diff --git a/compiler/tests-mutes/src/org/jetbrains/kotlin/test/mutes/MutedTestsSync.kt b/compiler/tests-mutes/tc-integration/src/org/jetbrains/kotlin/test/mutes/MutedTestsSync.kt similarity index 100% rename from compiler/tests-mutes/src/org/jetbrains/kotlin/test/mutes/MutedTestsSync.kt rename to compiler/tests-mutes/tc-integration/src/org/jetbrains/kotlin/test/mutes/MutedTestsSync.kt diff --git a/compiler/tests-mutes/src/org/jetbrains/kotlin/test/mutes/TeamCityInteraction.kt b/compiler/tests-mutes/tc-integration/src/org/jetbrains/kotlin/test/mutes/TeamCityInteraction.kt similarity index 100% rename from compiler/tests-mutes/src/org/jetbrains/kotlin/test/mutes/TeamCityInteraction.kt rename to compiler/tests-mutes/tc-integration/src/org/jetbrains/kotlin/test/mutes/TeamCityInteraction.kt diff --git a/settings.gradle b/settings.gradle index 4c14693281a..637afec59da 100644 --- a/settings.gradle +++ b/settings.gradle @@ -117,6 +117,7 @@ include ":benchmarks", ":compiler:android-tests", ":compiler:tests-common", ":compiler:tests-mutes", + ":compiler:tests-mutes:tc-integration", ":compiler:tests-common-jvm6", ":compiler:tests-against-klib", ":dukat",