From a5e25e2eb565bd254773ab7ab2dbbf9748c2d41c Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Fri, 5 May 2023 12:24:53 +0530 Subject: [PATCH] refactor(build): simplify test dependency setup --- android/build.gradle.kts | 11 ++---- api/build.gradle.kts | 11 ++---- .../dev/msfjarvis/claw/gradle/deps.ext.kt | 36 +++++++++++++++++++ database/build.gradle.kts | 11 ++---- 4 files changed, 45 insertions(+), 24 deletions(-) create mode 100644 build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/deps.ext.kt diff --git a/android/build.gradle.kts b/android/build.gradle.kts index b4bb4ac6..804a94b0 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -6,6 +6,8 @@ */ @file:Suppress("UnstableApiUsage") +import dev.msfjarvis.claw.gradle.addTestDependencies + plugins { id("dev.msfjarvis.claw.android-application") id("dev.msfjarvis.claw.rename-artifacts") @@ -74,14 +76,7 @@ dependencies { kapt(libs.dagger.compiler) - testImplementation(libs.junit.jupiter.api) testImplementation(libs.kotlinx.coroutines.test) testImplementation(libs.okhttp.mockwebserver) - testImplementation(libs.truth) { exclude(group = "junit", module = "junit") } - - testRuntimeOnly(libs.junit.jupiter.engine) - testRuntimeOnly(libs.junit.legacy) { - // See https://github.com/google/truth/issues/333 - because("Truth needs it") - } + addTestDependencies(project) } diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 70456578..81a399a2 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -4,6 +4,8 @@ * license that can be found in the LICENSE file or at * https://opensource.org/licenses/MIT. */ +import dev.msfjarvis.claw.gradle.addTestDependencies + plugins { id("dev.msfjarvis.claw.android-library") id("dev.msfjarvis.claw.kotlin-android") @@ -24,15 +26,8 @@ dependencies { implementation(libs.javax.inject) testImplementation(testFixtures(libs.eithernet)) - testImplementation(libs.junit.jupiter.api) testImplementation(libs.kotlinx.coroutines.test) testImplementation(libs.kotlinx.serialization.json) testImplementation(libs.retrofit.kotlinxSerializationConverter) - testImplementation(libs.truth) { exclude(group = "junit", module = "junit") } - - testRuntimeOnly(libs.junit.jupiter.engine) - testRuntimeOnly(libs.junit.legacy) { - // See https://github.com/google/truth/issues/333 - because("Truth needs it") - } + addTestDependencies(project) } diff --git a/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/deps.ext.kt b/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/deps.ext.kt new file mode 100644 index 00000000..2d419caa --- /dev/null +++ b/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/deps.ext.kt @@ -0,0 +1,36 @@ +/* + * Copyright © 2023 Harsh Shandilya. + * Use of this source code is governed by an MIT-style + * license that can be found in the LICENSE file or at + * https://opensource.org/licenses/MIT. + */ +package dev.msfjarvis.claw.gradle + +import org.gradle.api.Project +import org.gradle.api.artifacts.ExternalModuleDependency +import org.gradle.api.artifacts.MinimalExternalModuleDependency +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.DependencyHandlerScope +import org.gradle.kotlin.dsl.exclude +import org.gradle.kotlin.dsl.getByType + +/** Extension function to configure JUnit5 dependencies with the Truth assertion library. */ +fun DependencyHandlerScope.addTestDependencies(project: Project) { + val catalog = project.extensions.getByType() + val libs = catalog.named("libs") + addProvider("testImplementation", libs.findLibrary("junit-jupiter-api").get()) + addProvider( + "testImplementation", + libs.findLibrary("truth").get(), + ) { + exclude(group = "junit", module = "junit") + } + addProvider("testRuntimeOnly", libs.findLibrary("junit-jupiter-engine").get()) + addProvider( + "testRuntimeOnly", + libs.findLibrary("junit-legacy").get(), + ) { + // See https://github.com/google/truth/issues/333 + because("Truth needs it") + } +} diff --git a/database/build.gradle.kts b/database/build.gradle.kts index fd50df4e..3ef71ced 100644 --- a/database/build.gradle.kts +++ b/database/build.gradle.kts @@ -4,6 +4,8 @@ * license that can be found in the LICENSE file or at * https://opensource.org/licenses/MIT. */ +import dev.msfjarvis.claw.gradle.addTestDependencies + plugins { id("dev.msfjarvis.claw.android-library") id("dev.msfjarvis.claw.kotlin-android") @@ -33,14 +35,7 @@ dependencies { implementation(libs.sqldelight.primitiveAdapters) implementation(projects.core) - testImplementation(libs.junit.jupiter.api) testImplementation(libs.kotlinx.coroutines.core) testImplementation(libs.sqldelight.jvmDriver) - testImplementation(libs.truth) { exclude(group = "junit", module = "junit") } - - testRuntimeOnly(libs.junit.jupiter.engine) - testRuntimeOnly(libs.junit.legacy) { - // See https://github.com/google/truth/issues/333 - because("Truth needs it") - } + addTestDependencies(project) }