diff --git a/CHANGELOG.md b/CHANGELOG.md index ae0f3f16..53f6e3d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ ### Fixed +- `is*` extensions + ### Removed ### Updated diff --git a/gradle-version/main/kotlin/com/javiersc/gradle/version/IsExtensions.kt b/gradle-version/main/kotlin/com/javiersc/gradle/version/IsExtensions.kt index faa687b4..f95ac35a 100644 --- a/gradle-version/main/kotlin/com/javiersc/gradle/version/IsExtensions.kt +++ b/gradle-version/main/kotlin/com/javiersc/gradle/version/IsExtensions.kt @@ -6,7 +6,7 @@ public val GradleVersion.isAlpha: Boolean get() = stage?.name?.lowercase() == "alpha" public val String.isAlpha: Boolean - get() = lowercase() == "alpha" + get() = lowercase().substringBeforeLast(".").endsWith("alpha") public val GradleVersion.isNotAlpha: Boolean get() = !isAlpha @@ -18,7 +18,7 @@ public val GradleVersion.isBeta: Boolean get() = stage?.name?.lowercase() == "beta" public val String.isBeta: Boolean - get() = lowercase() == "beta" + get() = lowercase().substringBeforeLast(".").endsWith("beta") public val GradleVersion.isNotBeta: Boolean get() = !isBeta @@ -30,7 +30,7 @@ public val GradleVersion.isDev: Boolean get() = stage?.name?.lowercase() == SpecialStage.dev public val String.isDev: Boolean - get() = lowercase() == SpecialStage.dev + get() = lowercase().substringBeforeLast(".").endsWith(SpecialStage.dev) public val GradleVersion.isNotDev: Boolean get() = !isDev @@ -42,7 +42,7 @@ public val GradleVersion.isRC: Boolean get() = stage?.name?.lowercase() == SpecialStage.rc public val String.isRC: Boolean - get() = lowercase() == SpecialStage.rc + get() = lowercase().substringBeforeLast(".").endsWith(SpecialStage.rc) public val GradleVersion.isNotRC: Boolean get() = !isRC @@ -54,7 +54,7 @@ public val GradleVersion.isSnapshot: Boolean get() = stage?.name?.lowercase() == SpecialStage.snapshot public val String.isSnapshot: Boolean - get() = lowercase() == SpecialStage.snapshot + get() = lowercase().endsWith(SpecialStage.snapshot) public val GradleVersion.isNotSnapshot: Boolean get() = !isSnapshot diff --git a/semver-project-gradle-plugin/test/kotlin/com/javiersc/semver/project/gradle/plugin/ExtensionTests.kt b/semver-project-gradle-plugin/test/kotlin/com/javiersc/semver/project/gradle/plugin/ExtensionTests.kt new file mode 100644 index 00000000..0eec7047 --- /dev/null +++ b/semver-project-gradle-plugin/test/kotlin/com/javiersc/semver/project/gradle/plugin/ExtensionTests.kt @@ -0,0 +1,76 @@ +package com.javiersc.semver.project.gradle.plugin + +import com.javiersc.gradle.version.isAlpha +import com.javiersc.gradle.version.isBeta +import com.javiersc.gradle.version.isDev +import com.javiersc.gradle.version.isNotAlpha +import com.javiersc.gradle.version.isNotBeta +import com.javiersc.gradle.version.isNotDev +import com.javiersc.gradle.version.isNotRC +import com.javiersc.gradle.version.isNotSnapshot +import com.javiersc.gradle.version.isRC +import com.javiersc.gradle.version.isSnapshot +import io.kotest.matchers.booleans.shouldBeFalse +import io.kotest.matchers.booleans.shouldBeTrue +import kotlin.test.Test + +class ExtensionTests { + + @Test + fun `is version`() { + "1.0.0-alpha.1".isAlpha.shouldBeTrue() + "1.0.0-alpha.1".isNotAlpha.shouldBeFalse() + "1.0.0-alpha.1".isBeta.shouldBeFalse() + "1.0.0-alpha.1".isNotBeta.shouldBeTrue() + "1.0.0-alpha.1".isDev.shouldBeFalse() + "1.0.0-alpha.1".isNotDev.shouldBeTrue() + "1.0.0-alpha.1".isRC.shouldBeFalse() + "1.0.0-alpha.1".isNotRC.shouldBeTrue() + "1.0.0-alpha.1".isSnapshot.shouldBeFalse() + "1.0.0-alpha.1".isNotSnapshot.shouldBeTrue() + + "1.0.0-beta.1".isAlpha.shouldBeFalse() + "1.0.0-beta.1".isNotAlpha.shouldBeTrue() + "1.0.0-beta.1".isBeta.shouldBeTrue() + "1.0.0-beta.1".isNotBeta.shouldBeFalse() + "1.0.0-beta.1".isDev.shouldBeFalse() + "1.0.0-beta.1".isNotDev.shouldBeTrue() + "1.0.0-beta.1".isRC.shouldBeFalse() + "1.0.0-beta.1".isNotRC.shouldBeTrue() + "1.0.0-beta.1".isSnapshot.shouldBeFalse() + "1.0.0-beta.1".isNotSnapshot.shouldBeTrue() + + "1.0.0-dev.1".isAlpha.shouldBeFalse() + "1.0.0-dev.1".isNotAlpha.shouldBeTrue() + "1.0.0-dev.1".isBeta.shouldBeFalse() + "1.0.0-dev.1".isNotBeta.shouldBeTrue() + "1.0.0-dev.1".isDev.shouldBeTrue() + "1.0.0-dev.1".isNotDev.shouldBeFalse() + "1.0.0-dev.1".isRC.shouldBeFalse() + "1.0.0-dev.1".isNotRC.shouldBeTrue() + "1.0.0-dev.1".isSnapshot.shouldBeFalse() + "1.0.0-dev.1".isNotSnapshot.shouldBeTrue() + + "1.0.0-rc.1".isAlpha.shouldBeFalse() + "1.0.0-rc.1".isNotAlpha.shouldBeTrue() + "1.0.0-rc.1".isBeta.shouldBeFalse() + "1.0.0-rc.1".isNotBeta.shouldBeTrue() + "1.0.0-rc.1".isDev.shouldBeFalse() + "1.0.0-rc.1".isNotDev.shouldBeTrue() + "1.0.0-rc.1".isRC.shouldBeTrue() + "1.0.0-rc.1".isNotRC.shouldBeFalse() + "1.0.0-rc.1".isSnapshot.shouldBeFalse() + "1.0.0-rc.1".isNotSnapshot.shouldBeTrue() + + "1.0.0-SNAPSHOT".isAlpha.shouldBeFalse() + "1.0.0-SNAPSHOT".isNotAlpha.shouldBeTrue() + "1.0.0-SNAPSHOT".isBeta.shouldBeFalse() + "1.0.0-SNAPSHOT".isNotBeta.shouldBeTrue() + "1.0.0-SNAPSHOT".isDev.shouldBeFalse() + "1.0.0-SNAPSHOT".isNotDev.shouldBeTrue() + "1.0.0-SNAPSHOT".isRC.shouldBeFalse() + "1.0.0-SNAPSHOT".isNotRC.shouldBeTrue() + "1.0.0-SNAPSHOT".isSnapshot.shouldBeTrue() + "1.0.0-SNAPSHOT".isNotSnapshot.shouldBeFalse() + } +} diff --git a/semver-project-gradle-plugin/testIntegration/kotlin/com/javiersc/semver/project/gradle/plugin/SemverIntegrationTest.kt b/semver-project-gradle-plugin/testIntegration/kotlin/com/javiersc/semver/project/gradle/plugin/SemverIntegrationTest.kt index 3dc4b095..635bae7c 100644 --- a/semver-project-gradle-plugin/testIntegration/kotlin/com/javiersc/semver/project/gradle/plugin/SemverIntegrationTest.kt +++ b/semver-project-gradle-plugin/testIntegration/kotlin/com/javiersc/semver/project/gradle/plugin/SemverIntegrationTest.kt @@ -1,6 +1,29 @@ package com.javiersc.semver.project.gradle.plugin import com.javiersc.gradle.project.test.extensions.GradleProjectTest +import com.javiersc.gradle.version.GradleVersion +import com.javiersc.gradle.version.isAlpha +import com.javiersc.gradle.version.isBeta +import com.javiersc.gradle.version.isDev +import com.javiersc.gradle.version.isNotAlpha +import com.javiersc.gradle.version.isNotBeta +import com.javiersc.gradle.version.isNotDev +import com.javiersc.gradle.version.isNotRC +import com.javiersc.gradle.version.isNotSnapshot +import com.javiersc.gradle.version.isRC +import com.javiersc.gradle.version.isSnapshot +import com.javiersc.semver.project.gradle.plugin.extensions.isAlpha +import com.javiersc.semver.project.gradle.plugin.extensions.isBeta +import com.javiersc.semver.project.gradle.plugin.extensions.isDev +import com.javiersc.semver.project.gradle.plugin.extensions.isNotAlpha +import com.javiersc.semver.project.gradle.plugin.extensions.isNotBeta +import com.javiersc.semver.project.gradle.plugin.extensions.isNotDev +import com.javiersc.semver.project.gradle.plugin.extensions.isNotRC +import com.javiersc.semver.project.gradle.plugin.extensions.isNotSnapshot +import com.javiersc.semver.project.gradle.plugin.extensions.isRC +import com.javiersc.semver.project.gradle.plugin.extensions.isSnapshot +import io.kotest.matchers.booleans.shouldBeFalse +import io.kotest.matchers.booleans.shouldBeTrue import io.kotest.matchers.collections.shouldHaveSize import io.kotest.matchers.collections.shouldNotContain import io.kotest.matchers.comparables.shouldBeGreaterThan @@ -13,6 +36,7 @@ import io.kotest.matchers.string.shouldStartWith import java.time.Instant import kotlin.test.Test import kotlin.time.Duration.Companion.seconds +import org.gradle.api.Project import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.findByType @@ -69,4 +93,69 @@ class SemverIntegrationTest : GradleProjectTest() { } } } + + @Test + fun `given a project with some version when it builds then the is extensions work`() { + gradleProjectTest { + assignVersion("1.0.0-alpha.1").isAlpha.get().shouldBeTrue() + assignVersion("1.0.0-alpha.1").isNotAlpha.get().shouldBeFalse() + assignVersion("1.0.0-alpha.1").isBeta.get().shouldBeFalse() + assignVersion("1.0.0-alpha.1").isNotBeta.get().shouldBeTrue() + assignVersion("1.0.0-alpha.1").isDev.get().shouldBeFalse() + assignVersion("1.0.0-alpha.1").isNotDev.get().shouldBeTrue() + assignVersion("1.0.0-alpha.1").isRC.get().shouldBeFalse() + assignVersion("1.0.0-alpha.1").isNotRC.get().shouldBeTrue() + assignVersion("1.0.0-alpha.1").isSnapshot.get().shouldBeFalse() + assignVersion("1.0.0-alpha.1").isNotSnapshot.get().shouldBeTrue() + + assignVersion("1.0.0-beta.1").isAlpha.get().shouldBeFalse() + assignVersion("1.0.0-beta.1").isNotAlpha.get().shouldBeTrue() + assignVersion("1.0.0-beta.1").isBeta.get().shouldBeTrue() + assignVersion("1.0.0-beta.1").isNotBeta.get().shouldBeFalse() + assignVersion("1.0.0-beta.1").isDev.get().shouldBeFalse() + assignVersion("1.0.0-beta.1").isNotDev.get().shouldBeTrue() + assignVersion("1.0.0-beta.1").isRC.get().shouldBeFalse() + assignVersion("1.0.0-beta.1").isNotRC.get().shouldBeTrue() + assignVersion("1.0.0-beta.1").isSnapshot.get().shouldBeFalse() + assignVersion("1.0.0-beta.1").isNotSnapshot.get().shouldBeTrue() + + assignVersion("1.0.0-dev.1").isAlpha.get().shouldBeFalse() + assignVersion("1.0.0-dev.1").isNotAlpha.get().shouldBeTrue() + assignVersion("1.0.0-dev.1").isBeta.get().shouldBeFalse() + assignVersion("1.0.0-dev.1").isNotBeta.get().shouldBeTrue() + assignVersion("1.0.0-dev.1").isDev.get().shouldBeTrue() + assignVersion("1.0.0-dev.1").isNotDev.get().shouldBeFalse() + assignVersion("1.0.0-dev.1").isRC.get().shouldBeFalse() + assignVersion("1.0.0-dev.1").isNotRC.get().shouldBeTrue() + assignVersion("1.0.0-dev.1").isSnapshot.get().shouldBeFalse() + assignVersion("1.0.0-dev.1").isNotSnapshot.get().shouldBeTrue() + + assignVersion("1.0.0-rc.1").isAlpha.get().shouldBeFalse() + assignVersion("1.0.0-rc.1").isNotAlpha.get().shouldBeTrue() + assignVersion("1.0.0-rc.1").isBeta.get().shouldBeFalse() + assignVersion("1.0.0-rc.1").isNotBeta.get().shouldBeTrue() + assignVersion("1.0.0-rc.1").isDev.get().shouldBeFalse() + assignVersion("1.0.0-rc.1").isNotDev.get().shouldBeTrue() + assignVersion("1.0.0-rc.1").isRC.get().shouldBeTrue() + assignVersion("1.0.0-rc.1").isNotRC.get().shouldBeFalse() + assignVersion("1.0.0-rc.1").isSnapshot.get().shouldBeFalse() + assignVersion("1.0.0-rc.1").isNotSnapshot.get().shouldBeTrue() + + assignVersion("1.0.0-SNAPSHOT").isAlpha.get().shouldBeFalse() + assignVersion("1.0.0-SNAPSHOT").isNotAlpha.get().shouldBeTrue() + assignVersion("1.0.0-SNAPSHOT").isBeta.get().shouldBeFalse() + assignVersion("1.0.0-SNAPSHOT").isNotBeta.get().shouldBeTrue() + assignVersion("1.0.0-SNAPSHOT").isDev.get().shouldBeFalse() + assignVersion("1.0.0-SNAPSHOT").isNotDev.get().shouldBeTrue() + assignVersion("1.0.0-SNAPSHOT").isRC.get().shouldBeFalse() + assignVersion("1.0.0-SNAPSHOT").isNotRC.get().shouldBeTrue() + assignVersion("1.0.0-SNAPSHOT").isSnapshot.get().shouldBeTrue() + assignVersion("1.0.0-SNAPSHOT").isNotSnapshot.get().shouldBeFalse() + } + } + + private fun Project.assignVersion(version: String): Project { + this.version = GradleVersion(version) + return this + } }