Просмотр исходного кода

Buildscript: Fix test artifacts included in main sourceset

Him188 4 лет назад
Родитель
Сommit
a143340141
2 измененных файлов с 27 добавлено и 12 удалено
  1. 26 11
      buildSrc/src/main/kotlin/ProjectConfigure.kt
  2. 1 1
      mirai-core/build.gradle.kts

+ 26 - 11
buildSrc/src/main/kotlin/ProjectConfigure.kt

@@ -70,28 +70,43 @@ fun Project.configureKotlinTestSettings() {
     tasks.withType(Test::class) {
         useJUnitPlatform()
     }
+    val b = "Auto-set for project '${project.path}'. (configureKotlinTestSettings)"
     when {
         isKotlinJvmProject -> {
             dependencies {
-                "testImplementation"(kotlin("test-junit5"))
+                "testImplementation"(kotlin("test-junit5"))?.because(b)
 
-                "testApi"("org.junit.jupiter:junit-jupiter-api:${Versions.junit}")
-                "testRuntimeOnly"("org.junit.jupiter:junit-jupiter-engine:${Versions.junit}")
+                "testApi"("org.junit.jupiter:junit-jupiter-api:${Versions.junit}")?.because(b)
+                "testRuntimeOnly"("org.junit.jupiter:junit-jupiter-engine:${Versions.junit}")?.because(b)
             }
         }
         isKotlinMpp -> {
             kotlinSourceSets?.forEach { sourceSet ->
-                if (sourceSet.name == "common") {
+                fun configureJvmTest(sourceSet: KotlinSourceSet) {
                     sourceSet.dependencies {
-                        implementation(kotlin("test"))
-                        implementation(kotlin("test-annotations-common"))
+                        implementation(kotlin("test-junit5"))?.because(b)
+
+                        implementation("org.junit.jupiter:junit-jupiter-api:${Versions.junit}")?.because(b)
+                        runtimeOnly("org.junit.jupiter:junit-jupiter-engine:${Versions.junit}")?.because(b)
                     }
-                } else {
-                    sourceSet.dependencies {
-                        implementation(kotlin("test-junit5"))
+                }
 
-                        implementation("org.junit.jupiter:junit-jupiter-api:${Versions.junit}")
-                        implementation("org.junit.jupiter:junit-jupiter-engine:${Versions.junit}")
+                val target = kotlinTargets.orEmpty()
+                    .find { it.name == sourceSet.name.substringBeforeLast("Main").substringBeforeLast("Test") }
+
+                when {
+                    sourceSet.name == "commonTest" -> {
+                        if (target?.platformType == KotlinPlatformType.jvm || target?.platformType == KotlinPlatformType.androidJvm) {
+                            configureJvmTest(sourceSet)
+                        } else {
+                            sourceSet.dependencies {
+                                implementation(kotlin("test"))?.because(b)
+                                implementation(kotlin("test-annotations-common"))?.because(b)
+                            }
+                        }
+                    }
+                    sourceSet.name.contains("test", ignoreCase = true) -> {
+                        configureJvmTest(sourceSet)
                     }
                 }
             }

+ 1 - 1
mirai-core/build.gradle.kts

@@ -92,7 +92,7 @@ kotlin {
             val androidTest by getting {
                 dependencies {
                     implementation(kotlin("test", Versions.kotlinCompiler))
-                    implementation(kotlin("test-junit", Versions.kotlinCompiler))
+                    implementation(kotlin("test-junit5", Versions.kotlinCompiler))
                     implementation(kotlin("test-annotations-common"))
                     implementation(kotlin("test-common"))
                 }