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

chia7712 pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 7accdc89e69 KAFKA-20553 Eliminate the dependencies on 
sourceSets.test.output for storage:storage-api (#22244)
7accdc89e69 is described below

commit 7accdc89e69dae59bdc64d5856be63ab49d95784
Author: Murali Basani <[email protected]>
AuthorDate: Sun May 10 05:14:04 2026 +0200

    KAFKA-20553 Eliminate the dependencies on sourceSets.test.output for 
storage:storage-api (#22244)
    
    Ref : https://issues.apache.org/jira/browse/KAFKA-20553  Similar to
    https://github.com/apache/kafka/pull/22229 but for storage:storage-api
    module
    
    - Apply `java-test-fixtures` plugin to `:storage:storage-api`
    - Moved couple of tests to testFixtures source
    - Added `testFixturesImplementation project(':clients')` which is the
    only one needed for the above test classes which moved
    - Update build gradle to handle above rewiring
    
    Reviewers: Chia-Ping Tsai <[email protected]>
---
 build.gradle                                       | 24 ++++++++++++++--------
 .../storage/NoOpRemoteLogMetadataManager.java      |  0
 .../remote/storage/NoOpRemoteStorageManager.java   |  0
 3 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/build.gradle b/build.gradle
index 29bcc6a5ce7..bb689dee974 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1024,7 +1024,7 @@ project(':server') {
     testImplementation testLog4j2Libs
     testImplementation project(':test-common:test-common-internal-api')
     testImplementation project(':test-common:test-common-runtime')
-    testImplementation project(':storage:storage-api').sourceSets.test.output
+    testImplementation testFixtures(project(':storage:storage-api'))
     testImplementation testFixtures(project(':server-common'))
 
     testRuntimeOnly runtimeTestLibs
@@ -1144,7 +1144,7 @@ project(':core') {
     testImplementation project(':metadata').sourceSets.test.output
     testImplementation project(':raft').sourceSets.test.output
     testImplementation testFixtures(project(':server-common'))
-    testImplementation project(':storage:storage-api').sourceSets.test.output
+    testImplementation testFixtures(project(':storage:storage-api'))
     testImplementation project(':server').sourceSets.test.output
     testImplementation project(':streams')
     testImplementation project(':test-common:test-common-runtime')
@@ -2324,12 +2324,16 @@ project(':storage:storage-api') {
     archivesName = "kafka-storage-api"
   }
 
+  apply plugin: 'java-test-fixtures'
+
   dependencies {
     implementation project(':clients')
     implementation project(':server-common')
     implementation libs.metrics
     implementation libs.slf4jApi
 
+    testFixturesImplementation project(':clients')
+
     testImplementation project(':clients')
     testImplementation testFixtures(project(':clients'))
     testImplementation libs.junitJupiter
@@ -2403,7 +2407,7 @@ project(':storage') {
     testImplementation testFixtures(project(':clients'))
     testImplementation project(':core')
     testImplementation project(':core').sourceSets.test.output
-    testImplementation project(':storage:storage-api').sourceSets.test.output
+    testImplementation testFixtures(project(':storage:storage-api'))
     testImplementation project(':test-common:test-common-internal-api')
     testImplementation project(':test-common:test-common-runtime')
     testImplementation project(':test-common:test-common-util')
@@ -4067,18 +4071,22 @@ task aggregatedJavadoc(type: Javadoc) {
 
 gradle.projectsEvaluated {
   // Validate that no module depends on test output directly
-  def protectedModules = ['clients', 'server-common']
+  def protectedModules = [
+    'clients': ':clients',
+    'server-common': ':server-common',
+    'storage/api': ':storage:storage-api',
+  ]
   allprojects { proj ->
     proj.configurations.all { config ->
       config.dependencies.each { dep ->
         if (dep instanceof FileCollectionDependency) {
           dep.files.files.each { file ->
-            protectedModules.each { module ->
-              if 
(file.absolutePath.endsWith("/${module}/build/classes/java/test")) {
+            protectedModules.each { dir, projectPath ->
+              if 
(file.absolutePath.endsWith("/${dir}/build/classes/java/test")) {
                 throw new GradleException("""
-ERROR: Dependency on :${module} test output is not allowed.
+ERROR: Dependency on ${projectPath} test output is not allowed.
 Found in project ${proj.path} configuration '${config.name}'.
-Use `testFixtures(project(':${module}'))` instead of 
`project(':${module}').sourceSets.test.output`
+Use `testFixtures(project('${projectPath}'))` instead of 
`project('${projectPath}').sourceSets.test.output`
 """)
               }
             }
diff --git 
a/storage/api/src/test/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteLogMetadataManager.java
 
b/storage/api/src/testFixtures/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteLogMetadataManager.java
similarity index 100%
rename from 
storage/api/src/test/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteLogMetadataManager.java
rename to 
storage/api/src/testFixtures/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteLogMetadataManager.java
diff --git 
a/storage/api/src/test/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteStorageManager.java
 
b/storage/api/src/testFixtures/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteStorageManager.java
similarity index 100%
rename from 
storage/api/src/test/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteStorageManager.java
rename to 
storage/api/src/testFixtures/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteStorageManager.java

Reply via email to