From c432efc364828c9822331c8d6f7de28daaf995b2 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 1 Feb 2021 12:21:29 +0300 Subject: [PATCH] [Build] Extract configuration of JUnit5 dependencies to common helper in buildSrc --- buildSrc/src/main/kotlin/dependencies.kt | 47 +++++++++++++++++++ compiler/fir/analysis-tests/build.gradle.kts | 13 +---- compiler/fir/fir2ir/build.gradle.kts | 5 +- compiler/tests-common-new/build.gradle.kts | 13 +---- compiler/tests-different-jdk/build.gradle.kts | 10 +--- .../build.gradle.kts | 3 +- gradle/versions.properties | 2 + gradle/versions.properties.201 | 4 +- gradle/versions.properties.as41 | 4 +- gradle/versions.properties.as42 | 4 +- 10 files changed, 63 insertions(+), 42 deletions(-) diff --git a/buildSrc/src/main/kotlin/dependencies.kt b/buildSrc/src/main/kotlin/dependencies.kt index c2dc1d2880e..67ae48d510a 100644 --- a/buildSrc/src/main/kotlin/dependencies.kt +++ b/buildSrc/src/main/kotlin/dependencies.kt @@ -9,10 +9,13 @@ import org.gradle.api.GradleException import org.gradle.api.Project +import org.gradle.api.artifacts.Dependency +import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.ProjectDependency import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.FileCollection +import org.gradle.kotlin.dsl.accessors.runtime.addDependencyTo import org.gradle.kotlin.dsl.extra import org.gradle.kotlin.dsl.project import java.io.File @@ -112,6 +115,50 @@ fun DependencyHandler.projectTests(name: String): ProjectDependency = project(na fun DependencyHandler.projectRuntimeJar(name: String): ProjectDependency = project(name, configuration = "runtimeJar") fun DependencyHandler.projectArchives(name: String): ProjectDependency = project(name, configuration = "archives") +fun Project.testApiJUnit5( + vintageEngine: Boolean = false, + runner: Boolean = false, + suiteApi: Boolean = false +) { + with(dependencies) { + val platformVersion = commonVer("org.junit", "junit-bom") + testApi(platform("org.junit:junit-bom:$platformVersion")) + testApi("org.junit.jupiter:junit-jupiter") + if (vintageEngine) { + testApi("org.junit.vintage:junit-vintage-engine:$platformVersion") + } + val componentsVersion = commonVer("org.junit.platform", "") + + val components = mutableListOf( + "org.junit.platform:junit-platform-commons", + "org.junit.platform:junit-platform-launcher" + ) + if (runner) { + components += "org.junit.platform:junit-platform-runner" + } + if (suiteApi) { + components += "org.junit.platform:junit-platform-suite-api" + } + + for (component in components) { + testApi("$component:$componentsVersion") + } + + addDependencyTo(this, "testImplementation", intellijDep()) { + // This dependency is needed only for FileComparisonFailure + includeJars("idea_rt", rootProject = rootProject) + isTransitive = false + } + + // This is needed only for using FileComparisonFailure, which relies on JUnit 3 classes + add("testRuntimeOnly", commonDep("junit:junit")) + } +} + +private fun DependencyHandler.testApi(dependencyNotation: Any) { + add("testApi", dependencyNotation) +} + val Project.protobufVersion: String get() = findProperty("versions.protobuf") as String val Project.protobufRepo: String diff --git a/compiler/fir/analysis-tests/build.gradle.kts b/compiler/fir/analysis-tests/build.gradle.kts index ce6a74b6be5..f9424147c9f 100644 --- a/compiler/fir/analysis-tests/build.gradle.kts +++ b/compiler/fir/analysis-tests/build.gradle.kts @@ -24,10 +24,7 @@ dependencies { testApi(project(":compiler:fir:entrypoint")) testApi(project(":compiler:frontend")) - testApi(platform("org.junit:junit-bom:5.7.0")) - testApi("org.junit.jupiter:junit-jupiter") - testApi("org.junit.platform:junit-platform-commons:1.7.0") - testApi("org.junit.platform:junit-platform-launcher:1.7.0") + testApiJUnit5() testCompileOnly(project(":kotlin-reflect-api")) testRuntimeOnly(project(":kotlin-reflect")) @@ -35,14 +32,6 @@ dependencies { testRuntimeOnly(project(":compiler:fir:fir2ir:jvm-backend")) testImplementation(intellijCoreDep()) { includeJars("intellij-core") } - testImplementation(intellijDep()) { - // This dependency is needed only for FileComparisonFailure - includeJars("idea_rt", rootProject = rootProject) - isTransitive = false - } - - // This is needed only for using FileComparisonFailure, which relies on JUnit 3 classes - testRuntimeOnly(commonDep("junit:junit")) testRuntimeOnly(intellijDep()) { includeJars( "jps-model", diff --git a/compiler/fir/fir2ir/build.gradle.kts b/compiler/fir/fir2ir/build.gradle.kts index 7a2d8f29cb3..46b790ffc90 100644 --- a/compiler/fir/fir2ir/build.gradle.kts +++ b/compiler/fir/fir2ir/build.gradle.kts @@ -30,10 +30,7 @@ dependencies { testApi(projectTests(":compiler:fir:analysis-tests")) testApi(project(":compiler:fir:fir-serialization")) - testApi(platform("org.junit:junit-bom:5.7.0")) - testApi("org.junit.jupiter:junit-jupiter") - testApi("org.junit.platform:junit-platform-commons:1.7.0") - testApi("org.junit.platform:junit-platform-launcher:1.7.0") + testApiJUnit5() testCompileOnly(project(":kotlin-reflect-api")) testRuntimeOnly(project(":kotlin-reflect")) diff --git a/compiler/tests-common-new/build.gradle.kts b/compiler/tests-common-new/build.gradle.kts index ca46149571c..eff15908156 100644 --- a/compiler/tests-common-new/build.gradle.kts +++ b/compiler/tests-common-new/build.gradle.kts @@ -17,23 +17,12 @@ dependencies { testImplementation(projectTests(":generators:test-generator")) - testApi(platform("org.junit:junit-bom:5.7.0")) - testApi("org.junit.jupiter:junit-jupiter") - testApi("org.junit.platform:junit-platform-commons:1.7.0") - testApi("org.junit.platform:junit-platform-launcher:1.7.0") + testApiJUnit5() testApi(projectTests(":compiler:test-infrastructure")) testApi(projectTests(":compiler:test-infrastructure-utils")) testApi(projectTests(":compiler:tests-compiler-utils")) testApi(projectTests(":compiler:tests-common-jvm6")) - testImplementation(intellijDep()) { - // This dependency is needed only for FileComparisonFailure - includeJars("idea_rt", rootProject = rootProject) - isTransitive = false - } - - // This is needed only for using FileComparisonFailure, which relies on JUnit 3 classes - testRuntimeOnly(commonDep("junit:junit")) testRuntimeOnly(intellijDep()) { includeJars( "jps-model", diff --git a/compiler/tests-different-jdk/build.gradle.kts b/compiler/tests-different-jdk/build.gradle.kts index 46e1f235e75..54a5604d756 100644 --- a/compiler/tests-different-jdk/build.gradle.kts +++ b/compiler/tests-different-jdk/build.gradle.kts @@ -12,21 +12,13 @@ dependencies { testApi(projectTests(":compiler:test-infrastructure")) testApi(projectTests(":compiler:test-infrastructure-utils")) testApi(projectTests(":compiler:tests-compiler-utils")) - testCompile(projectTests(":compiler:tests-common")) testCompile(projectTests(":compiler:tests-common-new")) - testApi(platform("org.junit:junit-bom:5.7.0")) - testApi("org.junit.jupiter:junit-jupiter") - testApi("org.junit.vintage:junit-vintage-engine:5.7.0") - testApi("org.junit.platform:junit-platform-commons:1.7.0") - testApi("org.junit.platform:junit-platform-launcher:1.7.0") - testApi("org.junit.platform:junit-platform-runner:1.7.0") - testApi("org.junit.platform:junit-platform-suite-api:1.7.0") + testApiJUnit5(vintageEngine = true, runner = true, suiteApi = true) testCompileOnly(intellijCoreDep()) { includeJars("intellij-core") } testRuntime(project(":kotlin-reflect")) testRuntime(intellijDep()) - testRuntime(intellijDep()) testJvm6ServerRuntime(projectTests(":compiler:tests-common-jvm6")) } diff --git a/compiler/tests-for-compiler-generator/build.gradle.kts b/compiler/tests-for-compiler-generator/build.gradle.kts index 2ea78ef228c..df4fb78dd2a 100644 --- a/compiler/tests-for-compiler-generator/build.gradle.kts +++ b/compiler/tests-for-compiler-generator/build.gradle.kts @@ -7,8 +7,7 @@ dependencies { testRuntimeOnly(intellijDep()) // Should come before compiler, because of "progarded" stuff needed for tests testImplementation(kotlinStdlib()) - testImplementation(platform("org.junit:junit-bom:5.7.0")) - testImplementation("org.junit.jupiter:junit-jupiter") + testApiJUnit5() testImplementation(projectTests(":compiler:tests-common")) testImplementation(projectTests(":compiler:test-infrastructure")) testImplementation(projectTests(":compiler:tests-common-new")) diff --git a/gradle/versions.properties b/gradle/versions.properties index 4d501d53c02..498dd725e66 100644 --- a/gradle/versions.properties +++ b/gradle/versions.properties @@ -16,3 +16,5 @@ versions.jar.lz4-java=1.7.1 ignore.jar.snappy-in-java=true versions.gradle-api=4.5.1 versions.shadow=5.2.0 +versions.junit-bom=5.7.0 +versions.org.junit.platform=1.7.0 diff --git a/gradle/versions.properties.201 b/gradle/versions.properties.201 index eaa5a3ee09e..763d345abba 100644 --- a/gradle/versions.properties.201 +++ b/gradle/versions.properties.201 @@ -14,4 +14,6 @@ versions.jar.serviceMessages=2019.1.4 versions.jar.lz4-java=1.7.1 ignore.jar.snappy-in-java=true versions.gradle-api=4.5.1 -versions.shadow=5.2.0 \ No newline at end of file +versions.shadow=5.2.0 +versions.junit-bom=5.7.0 +versions.org.junit.platform=1.7.0 diff --git a/gradle/versions.properties.as41 b/gradle/versions.properties.as41 index fbbe449bfc1..e39cd80caa3 100644 --- a/gradle/versions.properties.as41 +++ b/gradle/versions.properties.as41 @@ -18,4 +18,6 @@ ignore.jar.snappy-in-java=true versions.gradle-api=4.5.1 versions.shadow=5.2.0 ignore.jar.common=true -ignore.jar.lombok-ast=true \ No newline at end of file +ignore.jar.lombok-ast=true +versions.junit-bom=5.7.0 +versions.org.junit.platform=1.7.0 diff --git a/gradle/versions.properties.as42 b/gradle/versions.properties.as42 index 7983c2a0f03..9c8184feb94 100644 --- a/gradle/versions.properties.as42 +++ b/gradle/versions.properties.as42 @@ -18,4 +18,6 @@ ignore.jar.snappy-in-java=true versions.gradle-api=4.5.1 versions.shadow=5.2.0 ignore.jar.common=true -ignore.jar.lombok-ast=true \ No newline at end of file +ignore.jar.lombok-ast=true +versions.junit-bom=5.7.0 +versions.org.junit.platform=1.7.0