Skip to content

Commit

Permalink
Fix is* extensions
Browse files Browse the repository at this point in the history
  • Loading branch information
JavierSegoviaCordoba committed Mar 28, 2024
1 parent 8440564 commit e733267
Show file tree
Hide file tree
Showing 4 changed files with 172 additions and 5 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

### Fixed

- `is*` extensions

### Removed

### Updated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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()
}
}
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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

Expand Down Expand Up @@ -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
}
}

0 comments on commit e733267

Please sign in to comment.