@@ -73,20 +73,20 @@ class SemVersionFinderTest {
7373 Tag (" v1.3.1-RC" , " SHA_B1" )
7474 )
7575
76- val a0 = Commit (" fix: msg a0" , " SHA_A0" , sequenceOf())
77- val a1 = Commit (" fix: msg a1" , " SHA_A1" , sequenceOf(a0))
76+ val a0 = Commit (" fix: msg a0" , " SHA_A0" , 0 , sequenceOf())
77+ val a1 = Commit (" fix: msg a1" , " SHA_A1" , 1 , sequenceOf(a0))
7878
79- val b0 = Commit (" fix: msg b0" , " SHA_B0" , sequenceOf(a1))
80- val b1 = Commit (" fix: msg b1" , " SHA_B1" , sequenceOf(b0))
81- val b2 = Commit (" fix: msg b2" , " SHA_B2" , sequenceOf(b1))
79+ val b0 = Commit (" fix: msg b0" , " SHA_B0" , 2 , sequenceOf(a1))
80+ val b1 = Commit (" fix: msg b1" , " SHA_B1" , 4 , sequenceOf(b0))
81+ val b2 = Commit (" fix: msg b2" , " SHA_B2" , 6 , sequenceOf(b1))
8282
83- val c0 = Commit (" fix: msg c0" , " SHA_C0" , sequenceOf(a1))
84- val c1 = Commit (" fix: msg c1" , " SHA_C1" , sequenceOf(c0))
85- val c2 = Commit (" fix: msg c2" , " SHA_C2" , sequenceOf(c1))
86- val c3 = Commit (" fix: msg c3" , " SHA_C3" , sequenceOf(c2))
83+ val c0 = Commit (" fix: msg c0" , " SHA_C0" , 3 , sequenceOf(a1))
84+ val c1 = Commit (" fix: msg c1" , " SHA_C1" , 5 , sequenceOf(c0))
85+ val c2 = Commit (" fix: msg c2" , " SHA_C2" , 7 , sequenceOf(c1))
86+ val c3 = Commit (" fix: msg c3" , " SHA_C3" , 9 , sequenceOf(c2))
8787
88- val d0 = Commit (" fix: msg d0" , " SHA_D0" , sequenceOf(c3, b2))
89- val d1 = Commit (" fix: msg d1" , " SHA_D1" , sequenceOf(d0))
88+ val d0 = Commit (" fix: msg d0" , " SHA_D0" , 10 , sequenceOf(c3, b2))
89+ val d1 = Commit (" fix: msg d1" , " SHA_D1" , 11 , sequenceOf(d0))
9090
9191 // when
9292 val versions = getVersion(tags, d1)
@@ -103,19 +103,19 @@ class SemVersionFinderTest {
103103 Tag (" v0.4.0" , " SHA0" )
104104 )
105105
106- val a0 = Commit (" a msg1" , " SHA0" , sequenceOf())
107- val a1 = Commit (" feat: a feature" , " SHA1" , sequenceOf(a0))
108- val a2 = Commit (" a msg3" , " SHA2" , sequenceOf(a1))
106+ val a0 = Commit (" a msg1" , " SHA0" , 0 , sequenceOf())
107+ val a1 = Commit (" feat: a feature" , " SHA1" , 1 , sequenceOf(a0))
108+ val a2 = Commit (" a msg3" , " SHA2" , 2 , sequenceOf(a1))
109109
110- val b0 = Commit (" fix: test 11" , " SHA11" , sequenceOf(a2))
111- val b1 = Commit (" fix: test 12" , " SHA12" , sequenceOf(b0))
112- val b2 = Commit (" fix: test 13" , " SHA13" , sequenceOf(b1))
110+ val b0 = Commit (" fix: test 11" , " SHA11" , 3 , sequenceOf(a2))
111+ val b1 = Commit (" fix: test 12" , " SHA12" , 4 , sequenceOf(b0))
112+ val b2 = Commit (" fix: test 13" , " SHA13" , 5 , sequenceOf(b1))
113113
114- val c0 = Commit (" fix: test 21" , " SHA21" , sequenceOf(a2))
115- val c1 = Commit (" fix: test 22" , " SHA22" , sequenceOf(c0))
114+ val c0 = Commit (" fix: test 21" , " SHA21" , 6 , sequenceOf(a2))
115+ val c1 = Commit (" fix: test 22" , " SHA22" , 7 , sequenceOf(c0))
116116
117- val d0 = Commit (" merge msg" , " SHA31" , sequenceOf(b2, c1))
118- val d1 = Commit (" fix: msg" , " SHA32" , sequenceOf(d0))
117+ val d0 = Commit (" merge msg" , " SHA31" , 8 , sequenceOf(b2, c1))
118+ val d1 = Commit (" fix: msg" , " SHA32" , 9 , sequenceOf(d0))
119119
120120 // when
121121 val versions = getVersion(tags, d1, groupVersions = false )
@@ -134,14 +134,14 @@ class SemVersionFinderTest {
134134 Tag (" v0.4.2-Alpha.1" , " SHA12" ),
135135 )
136136
137- val a0 = Commit (" a msg1" , " SHA0" , sequenceOf())
138- val a1 = Commit (" a msg2" , " SHA1" , sequenceOf(a0))
139- val a2 = Commit (" a msg3" , " SHA2" , sequenceOf(a1))
137+ val a0 = Commit (" a msg1" , " SHA0" , 0 , sequenceOf())
138+ val a1 = Commit (" a msg2" , " SHA1" , 2 , sequenceOf(a0))
139+ val a2 = Commit (" a msg3" , " SHA2" , 3 , sequenceOf(a1))
140140
141- val b0 = Commit (" fix: test 11" , " SHA11" , sequenceOf(a2))
142- val b1 = Commit (" fix: test 12" , " SHA12" , sequenceOf(b0))
143- val b2 = Commit (" fix: test 13" , " SHA13" , sequenceOf(b1))
144- val b3 = Commit (" fix: msg" , " SHA14" , sequenceOf(b2))
141+ val b0 = Commit (" fix: test 11" , " SHA11" , 4 , sequenceOf(a2))
142+ val b1 = Commit (" fix: test 12" , " SHA12" , 5 , sequenceOf(b0))
143+ val b2 = Commit (" fix: test 13" , " SHA13" , 6 , sequenceOf(b1))
144+ val b3 = Commit (" fix: msg" , " SHA14" , 7 , sequenceOf(b2))
145145
146146 // when
147147 val versions = getVersion(tags, b3, groupVersions = false )
@@ -433,6 +433,27 @@ class SemVersionFinderTest {
433433 assertEquals(" 1.0.0-RC.3+001" , actual.toInfoVersionString())
434434 }
435435
436+ @Test
437+ fun `test long lived develop branch should not count commits twice` () {
438+ val m1 = Commit (" Initial commit" , " 1" , 1 , emptySequence())
439+ val d2 = Commit (" fix: a fix" , " 2" , 2 , sequenceOf(m1))
440+ val d3 = Commit (" feat: a feat" , " 3" , 3 , sequenceOf(d2))
441+ val m4 = Commit (" merge branch develop" , " 4" , 4 , sequenceOf(m1, d3))
442+ val m5 = Commit (" release: v1.0.0" , " 5" , 5 , sequenceOf(m4))
443+ val d6 = Commit (" merge branch master into develop" , " 6" , 6 , sequenceOf(d3, m5))
444+ val d7 = Commit (" feat: a feat" , " 7" , 7 , sequenceOf(d6))
445+ val d8 = Commit (" feat: a feat" , " 8" , 8 , sequenceOf(d7))
446+ val m9 = Commit (" merge branch develop" , " 9" , 9 , sequenceOf(m5,d8))
447+ val m10 = Commit (" docs: some doc" , " 10" , 10 , sequenceOf(m9))
448+ val m11 = Commit (" release: 1.1.0" , " 11" , 11 , sequenceOf(m10))
449+ val d12 = Commit (" merge branch master into develop" , " 12" , 12 , sequenceOf(d8, m11))
450+
451+ val actual = getVersion(emptyList(), d12, false )
452+
453+ assertEquals(" 1.1.1-SNAPSHOT+001" , actual.toInfoVersionString())
454+ }
455+
456+
436457 @Test
437458 fun testIncrementVersion_dirty () {
438459 assertEquals(" 1.1.1-SNAPSHOT" , getVersionFromTagAndDirty(" v1.1.0" ))
@@ -525,12 +546,12 @@ class SemVersionFinderTest {
525546
526547 private fun asCommit (commits : List <String >) = asCommits(commits.reversed()).first()
527548
528- private fun asCommits (commits : List <String >): Sequence <Commit > {
529- return commits.take(1 ).map { Commit (" commit message" , it, asCommits(commits.drop(1 ))) }.asSequence()
549+ private fun asCommits (commits : List <String >, commitTime : Int = 0 ): Sequence <Commit > {
550+ return commits.take(1 ).map { Commit (" commit message" , it, commitTime, asCommits(commits.drop(1 ), commitTime + 1 )) }.asSequence()
530551 }
531552
532- private fun asCommits (shas : Iterable <Pair <String , String >>): Sequence <Commit > {
533- return shas.take(1 ).map { Commit (it.second, it.first, asCommits(shas.drop(1 ))) }.asSequence()
553+ private fun asCommits (shas : Iterable <Pair <String , String >>, commitTime : Int = 0 ): Sequence <Commit > {
554+ return shas.take(1 ).map { Commit (it.second, it.first, commitTime, asCommits(shas.drop(1 ), commitTime + 1 )) }.asSequence()
534555 }
535556
536557 private fun generateSHAString (range : IntRange ): List <String > {
0 commit comments