This is an automated email from the ASF dual-hosted git repository.

snazy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git


The following commit(s) were added to refs/heads/main by this push:
     new 72600e40 Build/testing: add `java-test-fixtures` to every Java project 
& reduce repeated dependency declarations (#714)
72600e40 is described below

commit 72600e40c8fd16266500942c7771806b135a38cb
Author: Robert Stupp <[email protected]>
AuthorDate: Tue Jan 14 10:21:34 2025 +0100

    Build/testing: add `java-test-fixtures` to every Java project & reduce 
repeated dependency declarations (#714)
    
    Reduce the amount of dependency declarations in all projects by adding 
adding the dependencies logback-classic (runtimeOnly) and assertj+mockito 
(implementation) to all test sources. test-fixtures get 
junit-jupiter+assertj+mockito as implementation dependencies.
    
    Also ensures that `useJUnitJupiter` is called with the correct version (it 
implicitly adds the jupiter runtime).
    
    logback-classic is needed at test runtime to actually get logs during test 
executions, logback-core is a dependency of logback-classic that provides the 
logback implementation.
---
 .../src/main/kotlin/polaris-java.gradle.kts        | 72 ++++++++++++++++++++--
 dropwizard/service/build.gradle.kts                |  6 --
 extension/persistence/eclipselink/build.gradle.kts | 11 +---
 gradle/libs.versions.toml                          |  2 +-
 polaris-core/build.gradle.kts                      | 10 +--
 service/common/build.gradle.kts                    |  1 -
 tools/config-docs/annotations/build.gradle.kts     |  5 +-
 tools/config-docs/generator/build.gradle.kts       | 12 +---
 tools/version/build.gradle.kts                     | 15 +----
 9 files changed, 74 insertions(+), 60 deletions(-)

diff --git a/build-logic/src/main/kotlin/polaris-java.gradle.kts 
b/build-logic/src/main/kotlin/polaris-java.gradle.kts
index 7c845a20..78f36347 100644
--- a/build-logic/src/main/kotlin/polaris-java.gradle.kts
+++ b/build-logic/src/main/kotlin/polaris-java.gradle.kts
@@ -26,8 +26,10 @@ import org.gradle.kotlin.dsl.named
 import publishing.PublishingHelperPlugin
 
 plugins {
-  id("jacoco")
-  id("java")
+  jacoco
+  `java-library`
+  `java-test-fixtures`
+  `jvm-test-suite`
   id("com.diffplug.spotless")
   id("jacoco-report-aggregation")
   id("net.ltgt.errorprone")
@@ -63,9 +65,69 @@ tasks.register("format").configure {
   dependsOn("spotlessApply")
 }
 
-tasks.named<Test>("test").configure {
-  useJUnitPlatform()
-  jvmArgs("-Duser.language=en")
+tasks.named<Test>("test").configure { jvmArgs("-Duser.language=en") }
+
+testing {
+  suites {
+    withType<JvmTestSuite> {
+      val libs = versionCatalogs.named("libs")
+
+      useJUnitJupiter(
+        libs
+          .findLibrary("junit-bom")
+          .orElseThrow { GradleException("junit-bom not declared in 
libs.versions.toml") }
+          .map { it.version!! }
+      )
+
+      dependencies {
+        implementation(project())
+        implementation(testFixtures(project()))
+        runtimeOnly(
+          libs.findLibrary("logback-classic").orElseThrow {
+            GradleException("logback-classic not declared in 
libs.versions.toml")
+          }
+        )
+        implementation(
+          libs.findLibrary("assertj-core").orElseThrow {
+            GradleException("assertj-core not declared in libs.versions.toml")
+          }
+        )
+        implementation(
+          libs.findLibrary("mockito-core").orElseThrow {
+            GradleException("mockito-core not declared in libs.versions.toml")
+          }
+        )
+      }
+
+      targets.all {
+        if (testTask.name != "test") {
+          testTask.configure { shouldRunAfter("test") }
+        }
+      }
+    }
+  }
+}
+
+dependencies {
+  val libs = versionCatalogs.named("libs")
+  testFixturesImplementation(
+    platform(
+      libs.findLibrary("junit-bom").orElseThrow {
+        GradleException("junit-bom not declared in libs.versions.toml")
+      }
+    )
+  )
+  testFixturesImplementation("org.junit.jupiter:junit-jupiter")
+  testFixturesImplementation(
+    libs.findLibrary("assertj-core").orElseThrow {
+      GradleException("assertj-core not declared in libs.versions.toml")
+    }
+  )
+  testFixturesImplementation(
+    libs.findLibrary("mockito-core").orElseThrow {
+      GradleException("mockito-core not declared in libs.versions.toml")
+    }
+  )
 }
 
 tasks.withType(Jar::class).configureEach {
diff --git a/dropwizard/service/build.gradle.kts 
b/dropwizard/service/build.gradle.kts
index f64d2ad8..8745c5bd 100644
--- a/dropwizard/service/build.gradle.kts
+++ b/dropwizard/service/build.gradle.kts
@@ -125,12 +125,6 @@ dependencies {
 
   testCompileOnly(libs.smallrye.common.annotation)
 
-  testImplementation(platform(libs.junit.bom))
-  testImplementation("org.junit.jupiter:junit-jupiter")
-  testImplementation(libs.assertj.core)
-  testImplementation(libs.mockito.core)
-  testRuntimeOnly("org.junit.platform:junit-platform-launcher")
-
   testImplementation(project(":polaris-eclipselink"))
 }
 
diff --git a/extension/persistence/eclipselink/build.gradle.kts 
b/extension/persistence/eclipselink/build.gradle.kts
index 20802ba6..d4edc3ee 100644
--- a/extension/persistence/eclipselink/build.gradle.kts
+++ b/extension/persistence/eclipselink/build.gradle.kts
@@ -22,10 +22,7 @@ fun isValidDep(dep: String): Boolean {
   return dep.matches(depRegex)
 }
 
-plugins {
-  id("polaris-server")
-  `java-library`
-}
+plugins { id("polaris-server") }
 
 dependencies {
   implementation(project(":polaris-core"))
@@ -52,12 +49,6 @@ dependencies {
 
   testImplementation(libs.h2)
   testImplementation(testFixtures(project(":polaris-core")))
-
-  testImplementation(platform(libs.junit.bom))
-  testImplementation("org.junit.jupiter:junit-jupiter")
-  testImplementation(libs.assertj.core)
-  testImplementation(libs.mockito.core)
-  testRuntimeOnly("org.junit.platform:junit-platform-launcher")
 }
 
 tasks.register<Jar>("createTestConfJar") {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 1a060d33..5734b92f 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -64,7 +64,7 @@ jakarta-ws-rs-api = { module = 
"jakarta.ws.rs:jakarta.ws.rs-api", version = "4.0
 javax-annotation-api = { module = "javax.annotation:javax.annotation-api", 
version = "1.3.2" }
 jetbrains-annotations = { module = "org.jetbrains:annotations", version = 
"26.0.1" }
 junit-bom = { module = "org.junit:junit-bom", version = "5.11.4" }
-logback-core = { module = "ch.qos.logback:logback-core", version = "1.4.14" }
+logback-classic = { module = "ch.qos.logback:logback-classic", version = 
"1.4.14" }
 micrometer-bom = { module = "io.micrometer:micrometer-bom", version = "1.14.3" 
}
 mockito-core = { module = "org.mockito:mockito-core", version = "5.15.2" }
 opentelemetry-bom = { module = "io.opentelemetry:opentelemetry-bom", version = 
"1.46.0" }
diff --git a/polaris-core/build.gradle.kts b/polaris-core/build.gradle.kts
index 320a0868..24158260 100644
--- a/polaris-core/build.gradle.kts
+++ b/polaris-core/build.gradle.kts
@@ -17,11 +17,7 @@
  * under the License.
  */
 
-plugins {
-  id("polaris-client")
-  id("java-library")
-  id("java-test-fixtures")
-}
+plugins { id("polaris-client") }
 
 dependencies {
   implementation(project(":polaris-api-management-model"))
@@ -95,10 +91,6 @@ dependencies {
   implementation(platform(libs.google.cloud.storage.bom))
   implementation("com.google.cloud:google-cloud-storage")
 
-  testFixturesApi(platform(libs.junit.bom))
-  testFixturesApi("org.junit.jupiter:junit-jupiter")
-  testFixturesApi(libs.assertj.core)
-  testFixturesApi(libs.mockito.core)
   testFixturesApi("com.fasterxml.jackson.core:jackson-core")
   testFixturesApi("com.fasterxml.jackson.core:jackson-databind")
   testFixturesApi(libs.commons.lang3)
diff --git a/service/common/build.gradle.kts b/service/common/build.gradle.kts
index 7aad2239..a8f32eab 100644
--- a/service/common/build.gradle.kts
+++ b/service/common/build.gradle.kts
@@ -68,7 +68,6 @@ dependencies {
 
   implementation(libs.auth0.jwt)
 
-  implementation(libs.logback.core)
   implementation(libs.bouncycastle.bcprov)
 
   implementation(platform(libs.google.cloud.storage.bom))
diff --git a/tools/config-docs/annotations/build.gradle.kts 
b/tools/config-docs/annotations/build.gradle.kts
index 90bb2ac8..88b6c756 100644
--- a/tools/config-docs/annotations/build.gradle.kts
+++ b/tools/config-docs/annotations/build.gradle.kts
@@ -17,9 +17,6 @@
  * under the License.
  */
 
-plugins {
-  id("polaris-client")
-  `java-library`
-}
+plugins { id("polaris-client") }
 
 description = "Polaris reference docs annotations"
diff --git a/tools/config-docs/generator/build.gradle.kts 
b/tools/config-docs/generator/build.gradle.kts
index 61ea0218..9d689706 100644
--- a/tools/config-docs/generator/build.gradle.kts
+++ b/tools/config-docs/generator/build.gradle.kts
@@ -17,11 +17,7 @@
  * under the License.
  */
 
-plugins {
-  id("polaris-server")
-  `java-library`
-  `java-test-fixtures`
-}
+plugins { id("polaris-server") }
 
 description = "Generates Polaris reference docs"
 
@@ -36,12 +32,6 @@ dependencies {
   implementation(libs.picocli)
   annotationProcessor(libs.picocli.codegen)
 
-  testFixturesApi(platform(libs.junit.bom))
-  testFixturesApi("org.junit.jupiter:junit-jupiter")
-  testRuntimeOnly("org.junit.platform:junit-platform-launcher")
-  testFixturesApi(libs.assertj.core)
-  testFixturesApi(libs.mockito.core)
-
   genTesting(project(":polaris-config-docs-annotations"))
   genTesting(libs.smallrye.config.core)
 }
diff --git a/tools/version/build.gradle.kts b/tools/version/build.gradle.kts
index 1ebb5bc3..a4f5ca26 100644
--- a/tools/version/build.gradle.kts
+++ b/tools/version/build.gradle.kts
@@ -19,12 +19,7 @@
 
 import org.apache.tools.ant.filters.ReplaceTokens
 
-plugins {
-  id("polaris-client")
-  `java-library`
-  `java-test-fixtures`
-  `jvm-test-suite`
-}
+plugins { id("polaris-client") }
 
 dependencies { testFixturesApi(libs.assertj.core) }
 
@@ -81,14 +76,8 @@ val jarTestJar by
 // need to test the `jar:` scheme/protocol resolution.
 testing {
   suites {
-    withType<JvmTestSuite> { useJUnitJupiter(libs.junit.bom.map { it.version!! 
}) }
-
     register<JvmTestSuite>("jarTest") {
-      dependencies {
-        compileOnly(project())
-        runtimeOnly(files(jarTestJar.get().archiveFile.get().asFile))
-        implementation(libs.assertj.core)
-      }
+      dependencies { 
runtimeOnly(files(jarTestJar.get().archiveFile.get().asFile)) }
 
       targets.all {
         testTask.configure {

Reply via email to