[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
This commit is contained in:
Dmitriy Novozhilov
2020-12-09 15:06:03 +03:00
parent 26d7ea6ce6
commit 8a5fc2ad29
8 changed files with 31 additions and 18 deletions
+1 -1
View File
@@ -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<Copy> {
+1 -16
View File
@@ -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" }
}
@@ -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 }
fun flakyTests(file: File): List<MutedTest> = loadMutedTests(file).filter { it.isFlaky }
@@ -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" }
}
+1
View File
@@ -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",