From ab2b751a899a316ed65b3b188a31b34a4c7d81c2 Mon Sep 17 00:00:00 2001 From: Steve Hill Date: Wed, 27 May 2020 08:04:01 -0700 Subject: [PATCH] Extract conditional test directory creation to LegacyWorkaroundsPlugin #148 --- .../gradle/plugins/jpi/JpiExtension.groovy | 7 ----- .../gradle/plugins/jpi/JpiPlugin.groovy | 2 ++ .../jpi/legacy/LegacyWorkaroundsPlugin.groovy | 29 +++++++++++++++++++ 3 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 src/main/groovy/org/jenkinsci/gradle/plugins/jpi/legacy/LegacyWorkaroundsPlugin.groovy diff --git a/src/main/groovy/org/jenkinsci/gradle/plugins/jpi/JpiExtension.groovy b/src/main/groovy/org/jenkinsci/gradle/plugins/jpi/JpiExtension.groovy index 37f4a3ca..5e04fff9 100644 --- a/src/main/groovy/org/jenkinsci/gradle/plugins/jpi/JpiExtension.groovy +++ b/src/main/groovy/org/jenkinsci/gradle/plugins/jpi/JpiExtension.groovy @@ -137,13 +137,6 @@ class JpiExtension { throw new GradleException('The gradle-jpi-plugin requires Jenkins 1.420 or later') } - // workarounds for JENKINS-26331 - if (new VersionNumber(this.coreVersion) >= new VersionNumber('1.545') && - new VersionNumber(this.coreVersion) < new VersionNumber('1.592')) { - project.tasks.test.doFirst { - project.file('target').mkdirs() - } - } if (new VersionNumber(this.coreVersion) < new VersionNumber('1.598')) { Delete clean = project.tasks.clean as Delete clean.delete('target') diff --git a/src/main/groovy/org/jenkinsci/gradle/plugins/jpi/JpiPlugin.groovy b/src/main/groovy/org/jenkinsci/gradle/plugins/jpi/JpiPlugin.groovy index 1c9a19f5..2bb0f60b 100644 --- a/src/main/groovy/org/jenkinsci/gradle/plugins/jpi/JpiPlugin.groovy +++ b/src/main/groovy/org/jenkinsci/gradle/plugins/jpi/JpiPlugin.groovy @@ -49,6 +49,7 @@ import org.gradle.api.tasks.compile.JavaCompile import org.gradle.api.tasks.testing.Test import org.gradle.language.base.plugins.LifecycleBasePlugin import org.gradle.util.GradleVersion +import org.jenkinsci.gradle.plugins.jpi.legacy.LegacyWorkaroundsPlugin import org.jenkinsci.gradle.plugins.jpi.server.GenerateJenkinsServerHplTask import org.jenkinsci.gradle.plugins.jpi.server.InstallJenkinsServerPluginsTask @@ -96,6 +97,7 @@ class JpiPlugin implements Plugin { gradleProject.plugins.apply(JavaLibraryPlugin) gradleProject.plugins.apply(GroovyPlugin) + gradleProject.plugins.apply(LegacyWorkaroundsPlugin) def ext = gradleProject.extensions.create('jenkinsPlugin', JpiExtension, gradleProject) diff --git a/src/main/groovy/org/jenkinsci/gradle/plugins/jpi/legacy/LegacyWorkaroundsPlugin.groovy b/src/main/groovy/org/jenkinsci/gradle/plugins/jpi/legacy/LegacyWorkaroundsPlugin.groovy new file mode 100644 index 00000000..320ccaa5 --- /dev/null +++ b/src/main/groovy/org/jenkinsci/gradle/plugins/jpi/legacy/LegacyWorkaroundsPlugin.groovy @@ -0,0 +1,29 @@ +package org.jenkinsci.gradle.plugins.jpi.legacy + +import groovy.transform.CompileStatic +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.api.Task +import org.gradle.util.GradleVersion +import org.jenkinsci.gradle.plugins.jpi.JpiExtension + +@CompileStatic +class LegacyWorkaroundsPlugin implements Plugin { + @Override + void apply(Project project) { + // workarounds for JENKINS-26331 + project.tasks.named('test').configure { Task t -> + def ext = project.extensions.getByType(JpiExtension) + if (isBetween(ext.coreVersion, '1.545', '1.592')) { + project.file('target').mkdirs() + } + } + } + + private static boolean isBetween(String subject, String lowerBoundInclusive, String upperExclusive) { + def current = GradleVersion.version(subject) + def lower = GradleVersion.version(lowerBoundInclusive) + def upper = GradleVersion.version(upperExclusive) + current >= lower && current < upper + } +}