snazy commented on code in PR #2283:
URL: https://github.com/apache/polaris/pull/2283#discussion_r2259381321
##########
build-logic/src/main/kotlin/polaris-runtime.gradle.kts:
##########
@@ -52,6 +52,14 @@ testing {
}
sources { java.srcDirs(tasks.named("quarkusGenerateCodeTests")) }
}
+ register<JvmTestSuite>("cloudTest") {
+ targets.all {
+ tasks.named("compileCloudTestJava").configure {
+ dependsOn(tasks.named("compileQuarkusTestGeneratedSourcesJava"))
+ }
+ }
Review Comment:
```suggestion
tasks.named("compileCloudTestJava").configure {
dependsOn("compileQuarkusTestGeneratedSourcesJava")
}
```
(`tasks` is `Project.tasks`, not part of `JvmTestSuite` - not to confuse w/
`JvmTestSuite.testTask` )
Same change can be applied above.
##########
runtime/service/build.gradle.kts:
##########
@@ -212,50 +212,55 @@ tasks.named<Test>("test").configure {
jvmArgs("-Xshare:off")
}
-tasks.named<Test>("intTest").configure {
- maxParallelForks = 1
-
- val logsDir = project.layout.buildDirectory.get().asFile.resolve("logs")
-
- // JVM arguments provider does not interfere with Gradle's cache keys
- jvmArgumentProviders.add(
- CommandLineArgumentProvider {
- // Same issue as above: allow a java security manager after Java 21
- // (this setting is for the application under test, while the setting
above is for test code).
- val securityManagerAllow = "-Djava.security.manager=allow"
-
- val args = mutableListOf<String>()
-
- // Example: to attach a debugger to the spawned JVM running Quarkus, add
- //
-Dquarkus.test.arg-line=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
- // to your test configuration.
- val explicitQuarkusTestArgLine =
System.getProperty("quarkus.test.arg-line")
- var quarkusTestArgLine =
- if (explicitQuarkusTestArgLine != null) "$explicitQuarkusTestArgLine
$securityManagerAllow"
- else securityManagerAllow
-
- args.add("-Dquarkus.test.arg-line=$quarkusTestArgLine")
- // This property is not honored in a per-profile application.properties
file,
- // so we need to set it here.
-
args.add("-Dquarkus.log.file.path=${logsDir.resolve("polaris.log").absolutePath}")
-
- // Add `quarkus.*` system properties, other than the ones explicitly set
above
- System.getProperties()
- .filter {
- it.key.toString().startsWith("quarkus.") &&
- !"quarkus.test.arg-line".equals(it.key) &&
- !"quarkus.log.file.path".equals(it.key)
- }
- .forEach { args.add("${it.key}=${it.value}") }
-
- args
+tasks
+ .withType<Test>()
+ .matching { it.name in listOf("intTest", "cloudTest") }
+ .configureEach {
Review Comment:
```suggestion
listOf("intTest", "cloudTest").map { tasks.named<Test>(it) }.forEach {
it.configure {
```
The `.matching { it.name` causes an eager configuration of all test tasks.
##########
build-logic/src/main/kotlin/polaris-runtime.gradle.kts:
##########
@@ -52,6 +52,14 @@ testing {
}
sources { java.srcDirs(tasks.named("quarkusGenerateCodeTests")) }
}
+ register<JvmTestSuite>("cloudTest") {
+ targets.all {
+ tasks.named("compileCloudTestJava").configure {
Review Comment:
```suggestion
tasks.named(sources.compileJavaTaskName).configure {
```
should work as well
##########
build-logic/src/main/kotlin/polaris-runtime.gradle.kts:
##########
@@ -78,7 +86,14 @@ configurations.named("intTestImplementation").configure {
extendsFrom(configurations.getByName("testImplementation"))
}
-dependencies { add("intTestImplementation",
java.sourceSets.getByName("test").output.dirs) }
+configurations.named("cloudTestImplementation").configure {
+ extendsFrom(configurations.getByName("testImplementation"))
+}
+
+dependencies {
+ add("intTestImplementation", java.sourceSets.getByName("test").output.dirs)
+ add("cloudTestImplementation", java.sourceSets.getByName("test").output.dirs)
Review Comment:
Can probably moved into the test suites `.register` closure as
``` kotlin
dependencies {
implementation(java.sourceSets.getByName("test").output.dirs)
}
```
##########
build-logic/src/main/kotlin/polaris-runtime.gradle.kts:
##########
@@ -52,6 +52,14 @@ testing {
}
sources { java.srcDirs(tasks.named("quarkusGenerateCodeTests")) }
}
+ register<JvmTestSuite>("cloudTest") {
Review Comment:
I _think_ with all the suggestions below, it could be unified as:
```kotlin
fun intTestSuiteConfigure(testSuite: JvmTestSuite) = testSuite.run {
targets.all {
testTask.configure {
// TODO configuration from lines 37..42 went here
// For Quarkus...
//
//
io.quarkus.test.junit.IntegrationTestUtil.determineBuildOutputDirectory(java.net.URL)
// is not smart enough :(
systemProperty("build.output.directory",
layout.buildDirectory.asFile.get())
dependsOn(tasks.named("quarkusBuild"))
}
}
tasks.named(sources.compileJavaTaskName).configure {
dependsOn("compileQuarkusTestGeneratedSourcesJava")
}
configurations.named(sources.runtimeOnlyConfigurationName).configure {
extendsFrom(configurations.getByName("testRuntimeOnly"))
}
configurations.named(sources.implementationConfigurationName).configure {
// Let the test's implementation config extend testImplementation, so it
also inherits the
// project's "main" implementation dependencies (not just the "api"
configuration)
extendsFrom(configurations.getByName("testImplementation"))
}
sources { java.srcDirs(tasks.named("quarkusGenerateCodeTests")) }
}
listOf("intTest", "cloudTest").forEach {
register<JvmTestSuite>(it).configure { intTestSuiteConfigure(this) } }
```
##########
build-logic/src/main/kotlin/polaris-runtime.gradle.kts:
##########
@@ -78,7 +86,14 @@ configurations.named("intTestImplementation").configure {
extendsFrom(configurations.getByName("testImplementation"))
}
-dependencies { add("intTestImplementation",
java.sourceSets.getByName("test").output.dirs) }
+configurations.named("cloudTestImplementation").configure {
+ extendsFrom(configurations.getByName("testImplementation"))
+}
Review Comment:
Can probably moved into the test suites `.register` closure as
```kotlin
configurations.named(sources.implementationConfigurationName).configure {
extendsFrom(configurations.get("testImplementation"))
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]