Skip to content

Commit f2d7b3c

Browse files
committed
fix!: Breaking changes on version 0.x.y should not update the major version.
1 parent 6571888 commit f2d7b3c

File tree

4 files changed

+8
-6
lines changed

4 files changed

+8
-6
lines changed

src/main/kotlin/git/semver/plugin/semver/BaseSettings.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import java.io.Serializable
55
abstract class BaseSettings(
66
var defaultPreRelease: String = "SNAPSHOT",
77
var releasePattern: String = "\\Arelease(?:\\([^()]+\\))?:",
8-
var patchPattern: String = "\\Afix(?:\\([^()]+\\))?:",
9-
var minorPattern: String = "\\Afeat(?:\\([^()]+\\))?:",
8+
var patchPattern: String = "\\Afix!?(?:\\([^()]+\\))?:",
9+
var minorPattern: String = "\\Afeat!?(?:\\([^()]+\\))?:",
1010
var majorPattern: String = "\\A\\w+(?:\\([^()]+\\))?!:|^BREAKING[ -]CHANGE:",
1111
var releaseCommitTextFormat: String = "release: v%s\n\n%s",
1212
var releaseTagNameFormat: String = "%s",

src/main/kotlin/git/semver/plugin/semver/MutableSemVersion.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ internal class MutableSemVersion(
125125
text: String
126126
) {
127127
when {
128-
settings.majorRegex.containsMatchIn(text) ->
128+
major > 0 && settings.majorRegex.containsMatchIn(text) ->
129129
if (!isPreRelease || major == initialVersion.major) {
130130
bumpMajor += 1
131131
bumpMinor = 0

src/test/kotlin/git/semver/plugin/scm/GitProviderTest.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class GitProviderTest {
5555

5656
val actual = release(gitProvider, it, "-")
5757

58-
assertEquals("2.0.0", actual.toVersionString())
58+
assertEquals("3.0.0", actual.toVersionString())
5959
}
6060

6161
printFoot()
@@ -74,7 +74,7 @@ class GitProviderTest {
7474

7575
val actual = release(gitProvider, it, "-")
7676

77-
assertEquals("2.0.0", actual.toVersionString())
77+
assertEquals("3.0.0", actual.toVersionString())
7878
}
7979
printFoot()
8080
}
@@ -119,7 +119,7 @@ class GitProviderTest {
119119
assertThat(actual.map(Commit::toString))
120120
.contains("feat: another feature")
121121
.contains("feat!: breaking feature")
122-
.contains("release: v2.0.0")
122+
.contains("release: v3.0.0")
123123
.doesNotContain("docs: updated readme")
124124
}
125125
}
@@ -151,6 +151,7 @@ class GitProviderTest {
151151

152152
private fun lotsOfCommits(it: Git, gitProvider: GitProvider) {
153153
initOrReset(it, gitProvider)
154+
commit(it, "release: 1.0.0", gitProvider)
154155
commit(it, "build: some changes", gitProvider)
155156
release(gitProvider, it)
156157
commit(it, "docs: updated readme", gitProvider)

src/test/kotlin/git/semver/plugin/semver/SemVersionFinderTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,7 @@ class SemVersionFinderTest {
312312
assertEquals("1.1.1-SNAPSHOT+003", getVersionFromTagAndCommits("v1.1.0", "Commit 1", "Commit 2", "Commit 3"))
313313
assertEquals("1.2.1-SNAPSHOT+003", getVersionFromTagAndCommits("v1.2", "Commit 1", "Commit 2", "Commit 3"))
314314
assertEquals("2.2.3-SNAPSHOT+001", getVersionFromTagAndCommits("v2.2.2", "Commit 1"))
315+
assertEquals("0.3.0-SNAPSHOT+001", getVersionFromTagAndCommits("v0.2.2", "feat!: Version 0 not updating major on breaking change"))
315316
assertEquals("3.0.0-SNAPSHOT+001", getVersionFromTagAndCommits("v2.2.2", "refactor!: drop some support"))
316317
assertEquals(
317318
"3.0.0-SNAPSHOT+001",

0 commit comments

Comments
 (0)