Skip to content

Commit

Permalink
Enchanced enableOnlyJavaToolchainAwareProjects to make testAllJavaToo…
Browse files Browse the repository at this point in the history
…lchains task depend only on those tasks/projects that support java toolchain.
  • Loading branch information
mr-serjey committed May 27, 2024
1 parent 875a291 commit 204a1a3
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 32 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ jobs:
GRADLE_VERSION: ${{ matrix.gradle }}
EXTRA_PROPERTIES: ${{ matrix.properties }}
TOOLCHAIN_JAVA_ARGS: "${{ matrix.toolchainJavaVersion && format('-PtoolchainJavaVersion={0}', matrix.toolchainJavaVersion) || '' }}"
GRADLE_TEST_TASK: "${{ matrix.toolchainJavaVersion && 'testAllJavaToolchain' || 'testAll' }}"

steps:
- uses: actions/checkout@v3
Expand Down Expand Up @@ -116,5 +117,5 @@ jobs:
$EXTRA_PROPERTIES $TOOLCHAIN_JAVA_ARGS \
-PgeckoDriverPlatform=linux64 \
-PtestAllContainers=$TEST_ALL_CONTAINERS \
testAll
$GRADLE_TEST_TASK
working-directory: integrationTests
4 changes: 2 additions & 2 deletions docker_integration_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ export common_gradle_args="--console=plain --no-daemon -Porg.gradle.java.install
$common_gradle_args \
-PtestAllContainers="\"['jetty9.3','jetty9.4','jetty10','tomcat85','tomcat9']\"" \
-PtoolchainJavaVersion=17 \
testAll
testAllJavaToolchain


#ci.yml matrix case #3 + toolchain java v21
Expand All @@ -65,4 +65,4 @@ export common_gradle_args="--console=plain --no-daemon -Porg.gradle.java.install
-PtestAllContainers="\"['jetty9.3','jetty9.4','jetty10','tomcat85','tomcat9']\"" \
-Pspock_version=2.3-groovy-3.0 -PgebVersion=5.1 \
-PtoolchainJavaVersion=21 \
testAll
testAllJavaToolchain
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,6 @@ class BasePlugin implements Plugin<Project> {
protected void configureExtensions(Project project) {
if (!project.extensions.findByName('javaVersion')) {
project.extensions.add(JavaVersion, 'javaVersion', JavaToolchainIntegrationTestPlugin.getToolchainJavaVersion(project))

/**
* Exclude tasks that do not support toolchains when toolchainJavaVersion specified
*/
if (project.findProperty('toolchainJavaVersion')) {
JavaToolchainIntegrationTestPlugin.enableOnlyJavaToolchainAwareProjects(project)
}
}
}

Expand Down Expand Up @@ -108,6 +101,9 @@ class BasePlugin implements Plugin<Project> {
if(!project.rootProject.tasks.findByName('testAll'))
project.rootProject.task 'testAll'

if(!project.rootProject.tasks.findByName('testAllJavaToolchain'))
project.rootProject.task 'testAllJavaToolchain'

project.tasks.withType(Test).configureEach {
if (GradleVersion.current().baseVersion.version.startsWith("7.")) {
useJUnitPlatform()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ class IntegrationTestPlugin extends BasePlugin {
super.configureExtensions(project)

/**
* The caller project integration test would react on -PtoolchainJavaVersion=17 parameter and define appropriate toolchain DSL
* Makes the project aware of java toolchain if it has -PtoolchainJavaVersion=17 parameter.
* Toolchain DSL is configured automatically for the provided version of java.
**/
project.ext.defineAsJavaToolchainAwareIntegrationTest = {
JavaToolchainIntegrationTestPlugin.applyPluginConditionally(project)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ class JavaToolchainIntegrationTestPlugin implements Plugin<Project> {
languageVersion = JavaLanguageVersion.of(javaVersion)
}
}

project.rootProject.tasks.named('testAllJavaToolchain').configure {
dependsOn project.tasks.testAll
}
}

public void forceSourceSetToUseGradleJvm(Project project, SourceSet sourceSet) {
Expand Down Expand Up @@ -77,27 +81,6 @@ class JavaToolchainIntegrationTestPlugin implements Plugin<Project> {
return JavaVersion.current()
}

public static void enableOnlyJavaToolchainAwareProjects(Project project) {
([project] + project.subprojects)*.afterEvaluate({ p ->
p.tasks.configureEach { t ->
enableOnlyJavaToolchainAwareTasks(t)
}
})
}

private static void enableOnlyJavaToolchainAwareTasks(Task task) {
task.project.with {
def initialFlag = task.enabled
if (task.project.findProperty('toolchainJavaVersion')) {
task.enabled = false
}

whenApplied(task.project) {
task.enabled = initialFlag
}
}
}

private static def getGradleJvmSpec() {
def gradleJvmVerson = Integer.valueOf(getGradleJavaVersion().getMajorVersion())
return { languageVersion = JavaLanguageVersion.of(gradleJvmVerson) }
Expand Down

0 comments on commit 204a1a3

Please sign in to comment.