From 2ec08a57986b6ecac20148c8c623712eb778e28f Mon Sep 17 00:00:00 2001 From: Joaquim Alvino de Mesquita Neto Date: Tue, 16 Jan 2024 12:11:06 +0100 Subject: [PATCH] make is extension methods public again (#69) --- .../version/VersionPluginExtension.groovy | 48 ++++++++++--------- .../gradle/version/VersionPluginSpec.groovy | 27 +++++++++++ 2 files changed, 53 insertions(+), 22 deletions(-) diff --git a/src/main/groovy/wooga/gradle/version/VersionPluginExtension.groovy b/src/main/groovy/wooga/gradle/version/VersionPluginExtension.groovy index 5ec4684..f32a169 100644 --- a/src/main/groovy/wooga/gradle/version/VersionPluginExtension.groovy +++ b/src/main/groovy/wooga/gradle/version/VersionPluginExtension.groovy @@ -271,34 +271,38 @@ trait VersionPluginExtension implements BaseSpec { this.prefix.set(prefix) } - private final Provider isDevelopment = canRunStageWithName(ReleaseStage.Development, stage) - private final Provider isSnapshot = canRunStageWithName(ReleaseStage.Snapshot, stage) - private final Provider isPrerelease = canRunStageWithName(ReleaseStage.Prerelease, stage) - private final Provider isFinal = canRunStageWithName(ReleaseStage.Final, stage) - - private final Provider releaseStage = providers.provider { -> - if (isDevelopment.getOrElse(false)) { - return ReleaseStage.Development - } else if (isSnapshot.getOrElse(false)) { - return ReleaseStage.Snapshot - } else if (isPrerelease.getOrElse(false)) { - return ReleaseStage.Prerelease - } else if (isFinal.getOrElse(false)) { - return ReleaseStage.Final - } else { - return versionScheme.flatMap{scheme -> - stage.map {stageName -> scheme.findStageForStageName(stageName) } - }.orNull - } - }.orElse(ReleaseStage.Unknown) - /** * @return The deduced release stage for this build */ Provider getReleaseStage() { - releaseStage + return providers.provider { -> + def canRunDevelopment = canRunStageWithName(ReleaseStage.Development, stage) + def canRunSnapshot = canRunStageWithName(ReleaseStage.Snapshot, stage) + def canRunPrerelease = canRunStageWithName(ReleaseStage.Prerelease, stage) + def canRunFinal = canRunStageWithName(ReleaseStage.Final, stage) + if (canRunDevelopment.getOrElse(false)) { + return ReleaseStage.Development + } else if (canRunSnapshot.getOrElse(false)) { + return ReleaseStage.Snapshot + } else if (canRunPrerelease.getOrElse(false)) { + return ReleaseStage.Prerelease + } else if (canRunFinal.getOrElse(false)) { + return ReleaseStage.Final + } else { + return versionScheme.flatMap{scheme -> + stage.map {stageName -> scheme.findStageForStageName(stageName) } + }.orNull + } + }.orElse(ReleaseStage.Unknown) } + + final Provider isDevelopment = getReleaseStage().map {it == ReleaseStage.Development } + final Provider isSnapshot = getReleaseStage().map {it == ReleaseStage.Snapshot } + final Provider isPrerelease = getReleaseStage().map {it == ReleaseStage.Prerelease } + final Provider isFinal = getReleaseStage().map {it == ReleaseStage.Final } + + /** * Infers the next version for this project based on extension information and underlying git repository tags. * @param scheme - version scheme that this project is following diff --git a/src/test/groovy/wooga/gradle/version/VersionPluginSpec.groovy b/src/test/groovy/wooga/gradle/version/VersionPluginSpec.groovy index 61b021a..9615217 100644 --- a/src/test/groovy/wooga/gradle/version/VersionPluginSpec.groovy +++ b/src/test/groovy/wooga/gradle/version/VersionPluginSpec.groovy @@ -19,6 +19,7 @@ package wooga.gradle.version import nebula.test.ProjectSpec import org.ajoberstar.grgit.Grgit +import org.gradle.api.provider.Provider import spock.lang.Ignore import spock.lang.IgnoreIf import spock.lang.Unroll @@ -1092,4 +1093,30 @@ class VersionPluginSpec extends ProjectSpec { propertyName | version "versionBuilder.version" | "1.2.3" } + + def "#stageProperty extension property returns expected value on given #stage"() { + given: + project.plugins.apply(PLUGIN_NAME) + def extension = project.extensions.getByType(VersionPluginExtension) + + when: + extension.stage = stage + + then: + def stageProvider = extension.properties[stageProperty] as Provider + stageProvider.get() == true + (allStageProperties - [stageProperty]).each { propName -> + assert extension.properties[propName].get() == false, "$propName should return falses" + } + + where: + stage | stageProperty + "snapshot" | "isSnapshot" + "dev" | "isDevelopment" + "rc" | "isPrerelease" + "final" | "isFinal" + + allStageProperties = ["isSnapshot", "isDevelopment", "isPrerelease", "isFinal"] + } + }