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

lhotari pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new a4c291f6aa3 [fix][broker] Avoid Project access in broker test setup 
(#25529)
a4c291f6aa3 is described below

commit a4c291f6aa38c79a81396df9ab89259c0fca1aec
Author: Zixuan Liu <[email protected]>
AuthorDate: Fri Apr 17 15:16:29 2026 +0800

    [fix][broker] Avoid Project access in broker test setup (#25529)
    
    Co-authored-by: Copilot <[email protected]>
---
 pulsar-broker/build.gradle.kts           | 50 +++++++++++++++++++++-----------
 pulsar-functions/worker/build.gradle.kts |  1 +
 2 files changed, 34 insertions(+), 17 deletions(-)

diff --git a/pulsar-broker/build.gradle.kts b/pulsar-broker/build.gradle.kts
index d794da2325f..e82061e7022 100644
--- a/pulsar-broker/build.gradle.kts
+++ b/pulsar-broker/build.gradle.kts
@@ -141,27 +141,43 @@ evaluationDependsOn(":pulsar-io")
 evaluationDependsOn(":pulsar-functions")
 
 // NAR/JAR files needed by broker tests (mirrors Maven's 
maven-dependency-plugin config).
+// Resolve through dependency configurations instead of cross-project task 
references.
+val testNars by configurations.creating {
+    isCanBeResolved = true
+    isCanBeConsumed = false
+    attributes {
+        
attribute(org.gradle.api.artifacts.type.ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE,
 "nar")
+    }
+}
+val testExamplesJar by configurations.creating {
+    isCanBeResolved = true
+    isCanBeConsumed = false
+}
+
+dependencies {
+    
testNars(project(":pulsar-functions:pulsar-functions-api-examples-builtin"))
+    testNars(project(":pulsar-io:pulsar-io-data-generator"))
+    testNars(project(":pulsar-io:pulsar-io-batch-data-generator"))
+    testExamplesJar(project(":pulsar-functions:pulsar-functions-api-examples"))
+}
+
 tasks.withType<Test> {
-    dependsOn(
-        ":pulsar-functions:pulsar-functions-api-examples:jar",
-        ":pulsar-functions:pulsar-functions-api-examples-builtin:nar",
-        ":pulsar-io:pulsar-io-data-generator:nar",
-        ":pulsar-io:pulsar-io-batch-data-generator:nar",
-    )
+    dependsOn(testNars, testExamplesJar)
+    val narFiles = testNars.incoming.artifacts.resolvedArtifacts
+    val jarFiles = testExamplesJar.incoming.artifacts.resolvedArtifacts
     doFirst {
-        fun narPath(projectPath: String): String {
-            val p = rootProject.project(projectPath)
-            return 
p.tasks.named("nar").get().outputs.files.singleFile.absolutePath
-        }
-        fun jarPath(projectPath: String): String {
-            val p = rootProject.project(projectPath)
-            return 
p.tasks.named<Jar>("jar").get().archiveFile.get().asFile.absolutePath
+        val narMap = narFiles.get().associate {
+            val id = it.id.componentIdentifier as 
org.gradle.api.artifacts.component.ProjectComponentIdentifier
+            id.projectPath to it.file.absolutePath
         }
-        val examplesJarPath = 
jarPath(":pulsar-functions:pulsar-functions-api-examples")
+        val examplesJarPath = jarFiles.get().first().file.absolutePath
         systemProperty("pulsar-functions-api-examples.jar.path", 
examplesJarPath)
-        systemProperty("pulsar-functions-api-examples.nar.path", 
narPath(":pulsar-functions:pulsar-functions-api-examples-builtin"))
-        systemProperty("pulsar-io-data-generator.nar.path", 
narPath(":pulsar-io:pulsar-io-data-generator"))
-        systemProperty("pulsar-io-batch-data-generator.nar.path", 
narPath(":pulsar-io:pulsar-io-batch-data-generator"))
+        systemProperty("pulsar-functions-api-examples.nar.path",
+            
narMap[":pulsar-functions:pulsar-functions-api-examples-builtin"]!!)
+        systemProperty("pulsar-io-data-generator.nar.path",
+            narMap[":pulsar-io:pulsar-io-data-generator"]!!)
+        systemProperty("pulsar-io-batch-data-generator.nar.path",
+            narMap[":pulsar-io:pulsar-io-batch-data-generator"]!!)
         // A valid jar that is not a valid nar — used for invalid-nar tests
         systemProperty("pulsar-io-invalid.nar.path", examplesJarPath)
     }
diff --git a/pulsar-functions/worker/build.gradle.kts 
b/pulsar-functions/worker/build.gradle.kts
index b233a4b0460..734dc9da0ae 100644
--- a/pulsar-functions/worker/build.gradle.kts
+++ b/pulsar-functions/worker/build.gradle.kts
@@ -113,6 +113,7 @@ dependencies {
 }
 
 tasks.withType<Test> {
+    dependsOn(testNars, testExamplesJar)
     // Map resolved NAR/JAR files to system properties
     val narFiles = testNars.incoming.artifacts.resolvedArtifacts
     val jarFiles = testExamplesJar.incoming.artifacts.resolvedArtifacts

Reply via email to