@@ -2,19 +2,22 @@ package git.semver.plugin.semver
22
33import git.semver.plugin.scm.Commit
44import git.semver.plugin.scm.Tag
5+ import org.assertj.core.api.Assertions.assertThat
6+ import org.junit.jupiter.params.ParameterizedTest
7+ import org.junit.jupiter.params.provider.Arguments
8+ import org.junit.jupiter.params.provider.MethodSource
59import kotlin.test.Test
610import kotlin.test.assertEquals
711
12+ private const val FIFTH = " 0000005"
13+ private const val FOURTH = " 0000004"
14+ private const val THIRD = " 0000003"
15+ private const val SECOND = " 0000002"
16+ private const val FIRST = " 0000001"
17+ private const val ZERO = " 0000000"
18+
819class SemVersionFinderTest {
9- companion object {
1020
11- private const val FIFTH = " 0000005"
12- private const val FOURTH = " 0000004"
13- private const val THIRD = " 0000003"
14- private const val SECOND = " 0000002"
15- private const val FIRST = " 0000001"
16- private const val ZERO = " 0000000"
17- }
1821
1922 @Test
2023 fun release_and_pre_release_tags () {
@@ -254,46 +257,9 @@ class SemVersionFinderTest {
254257 assertEquals(" 1.0.1-RC.3+001" , version.toInfoVersionString())
255258 }
256259
257- @Test
258- fun `test update from commit pre-release dirty` () {
259- assertEquals(" 1.1.1-Beta.3+001" , getVersionFromTagAndPreAndCommitDirty(" v1.1.0" , " 1.1.1-Beta.2" , " Commit 1" ))
260- assertEquals(" 2.2.4-Alpha+001" , getVersionFromTagAndPreAndCommitDirty(" v2.2.2" , " 2.2.3-Alpha" , " Commit 1" ))
261- assertEquals(" 2.2.3-Alpha.2+001" , getVersionFromTagAndPreAndCommitDirty(" v2.2.2" , " 2.2.3-Alpha.1" , " fix: bug" ))
262- assertEquals(" 2.2.3-Beta.4+001" , getVersionFromTagAndPreAndCommitDirty(" v2.2.2" , " 2.2.3-Beta.3" , " fix: bug" ))
263- assertEquals(
264- " 3.0.0-Beta.2+001" ,
265- getVersionFromTagAndPreAndCommitDirty(" v2.2.2" , " 3.0.0-Beta.1" , " refactor!: drop some support" )
266- )
267- assertEquals(
268- " 3.0.0-Beta.1+001" ,
269- getVersionFromTagAndPreAndCommitDirty(" v2.2.2" , " 2.2.3-Beta.1" , " refactor!: drop some support" )
270- )
271- assertEquals(
272- " 3.0.0-Beta.2+001" ,
273- getVersionFromTagAndPreAndCommitDirty(
274- " v2.2.2" ,
275- " 3.0.0-Beta.1" ,
276- " feat: new api\r\n\r\n A message\r\n\r\n BREAKING CHANGE: drop support"
277- )
278- )
279- assertEquals(
280- " 3.0.0-Beta.1+001" ,
281- getVersionFromTagAndPreAndCommitDirty(
282- " v2.2.2" ,
283- " 2.2.3-Beta.1" ,
284- " feat: new api\r\n\r\n A message\r\n\r\n BREAKING CHANGE: drop support"
285- )
286- )
287- assertEquals(" 2.3.0-NEXT.2+001" , getVersionFromTagAndPreAndCommitDirty(" v2.2.2" , " 2.3.0-NEXT.1" , " feat: new" ))
288- assertEquals(" 2.3.0-NEXT.1+001" , getVersionFromTagAndPreAndCommitDirty(" v2.2.2" , " 2.2.3-NEXT.1" , " feat: new" ))
289- assertEquals(
290- " 2.3.0-SNAPSHOT+002" ,
291- getVersionFromTagAndPreAndCommitDirty(" v2.2.2" , " 1.0.0-IGNORED" , " feat: new" )
292- )
293- assertEquals(" 2.3.0-NEXT+001" , getVersionFromTagAndPreAndCommitDirty(" v2.2.2" , " 2.2.3-NEXT" , " feat: new" ))
294- }
295-
296- private fun getVersionFromTagAndPreAndCommitDirty (tagName : String , preRelease : String , commit : String ): String {
260+ @ParameterizedTest
261+ @MethodSource(" test update from commit pre-release dirt testcases" )
262+ fun `test update from commit pre-release dirty` (expectedVersion : String , tagName : String , preRelease : String , commit : String ) {
297263 val commits = listOf (
298264 FIRST to " release tagged" ,
299265 SECOND to " pre-release tagged" ,
@@ -304,74 +270,93 @@ class SemVersionFinderTest {
304270 Tag (preRelease, SECOND )
305271 )
306272
307- return getVersion(tags, asCommits(commits.reversed()).first(), true ).toInfoVersionString()
273+ val actual = getVersion(tags, asCommits(commits.reversed()).first(), true ).toInfoVersionString()
274+
275+ assertThat(actual).isEqualTo(expectedVersion)
308276 }
309277
310- @Test
311- fun `test update from commit` () {
312- assertEquals(" 1.1.1-SNAPSHOT+003" , getVersionFromTagAndCommits(" v1.1.0" , " Commit 1" , " Commit 2" , " Commit 3" ))
313- assertEquals(" 1.2.1-SNAPSHOT+003" , getVersionFromTagAndCommits(" v1.2" , " Commit 1" , " Commit 2" , " Commit 3" ))
314- 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" ))
316- assertEquals(" 3.0.0-SNAPSHOT+001" , getVersionFromTagAndCommits(" v2.2.2" , " refactor!: drop some support" ))
317- assertEquals(
318- " 3.0.0-SNAPSHOT+001" ,
319- getVersionFromTagAndCommits(
278+
279+ @ParameterizedTest
280+ @MethodSource(" test update from commit testcases" )
281+ fun `test update from commit` (expectedVersion : String , tagName : String , commits : Array <String >) {
282+ assertThat(getVersionFromTagAndCommits(tagName, * commits)).isEqualTo(expectedVersion)
283+ }
284+
285+ companion object {
286+ @JvmStatic
287+ fun `test update from commit pre-release dirt testcases` () = listOf (
288+ Arguments .of(" 1.1.1-Beta.3+001" , " v1.1.0" , " 1.1.1-Beta.2" , " Commit 1" ),
289+ Arguments .of(" 2.2.4-Alpha+001" , " v2.2.2" , " 2.2.3-Alpha" , " Commit 1" ),
290+ Arguments .of(" 2.2.3-Alpha.2+001" , " v2.2.2" , " 2.2.3-Alpha.1" , " fix: bug" ),
291+ Arguments .of(" 2.2.3-Beta.4+001" , " v2.2.2" , " 2.2.3-Beta.3" , " fix: bug" ),
292+ Arguments .of(" 3.0.0-Beta.2+001" , " v2.2.2" , " 3.0.0-Beta.1" , " refactor!: drop some support" ),
293+ Arguments .of(" 3.0.0-Beta.1+001" , " v2.2.2" , " 2.2.3-Beta.1" , " refactor!: drop some support" ),
294+ Arguments .of(
295+ " 3.0.0-Beta.2+001" ,
320296 " v2.2.2" ,
321- " feat: new api\r\n\r\n Replacing the old API\r\n\r\n BREAKING CHANGE: drop support"
322- )
323- )
324- assertEquals(" 2.3.0-SNAPSHOT+001" , getVersionFromTagAndCommits(" v2.2.2" , " feat: new" ))
325- assertEquals(" 2.2.3-SNAPSHOT+001" , getVersionFromTagAndCommits(" v2.2.2" , " fix: bug" ))
326- assertEquals(" 1.0.1-SNAPSHOT+002" , getVersionFromTagAndCommits(" v1.0.0" , " fix: bug" , " fix: bug" ))
327-
328- assertEquals(" 3.0.0" , getVersionFromTagAndCommits(" v2.2.2" , " refactor!: drop some support" , " release: 3.0.0" ))
329- assertEquals(" 2.2.3" , getVersionFromTagAndCommits(" v2.2.2" , " fix: bug" , " release: 2.2.3" ))
330- assertEquals(" 1.0.2" , getVersionFromTagAndCommits(" v1.0.0" , " fix: bug" , " fix: bug" , " release: 1.0.2" ))
331- assertEquals(
332- " 1.0.3-SNAPSHOT+002" ,
333- getVersionFromTagAndCommits(" v1.0.0" , " fix: bug" , " fix: bug" , " release: 1.0.2" , " fix: bug" , " fix: bug" )
334- )
335- assertEquals(" 2.3.0" , getVersionFromTagAndCommits(" v2.2.2" , " feat: wow" , " release: 2.3.0" ))
336- assertEquals(" 3.0.0" , getVersionFromTagAndCommits(" v2.2.2" , " feat!: WOW" , " release: 3.0.0" ))
337- assertEquals(
338- " 2.2.4-SNAPSHOT+001" ,
339- getVersionFromTagAndCommits(" v2.2.2" , " fix: bug" , " release: 2.2.3" , " fix: bug" )
340- )
341- assertEquals(
342- " 2.3.1-SNAPSHOT+001" ,
343- getVersionFromTagAndCommits(" v2.2.2" , " feat: new" , " release: 2.3.0" , " fix: bug" )
344- )
345- assertEquals(
346- " 3.0.1-SNAPSHOT+001" ,
347- getVersionFromTagAndCommits(" v2.2.2" , " feat!: WOW" , " release: 3.0.0" , " fix: bug" )
348- )
349- assertEquals(
350- " 2.3.0-SNAPSHOT+001" ,
351- getVersionFromTagAndCommits(" v2.2.2" , " fix: bug" , " release: 2.2.3" , " feat: new" )
352- )
353- assertEquals(
354- " 2.4.0-SNAPSHOT+001" ,
355- getVersionFromTagAndCommits(" v2.2.2" , " feat: new" , " release: 2.3.0" , " feat: new" )
356- )
357- assertEquals(
358- " 3.1.0-SNAPSHOT+001" ,
359- getVersionFromTagAndCommits(" v2.2.2" , " feat!: WOW" , " release: 3.0.0" , " feat: new" )
360- )
361- assertEquals(
362- " 3.0.0-SNAPSHOT+001" ,
363- getVersionFromTagAndCommits(" v2.2.2" , " fix: bug" , " release: 2.2.3" , " feat!: WOW" )
364- )
365- assertEquals(
366- " 3.0.0-SNAPSHOT+001" ,
367- getVersionFromTagAndCommits(" v2.2.2" , " feat: new" , " release: 2.3.0" , " feat!: WOW" )
368- )
369- assertEquals(
370- " 4.0.0-SNAPSHOT+001" ,
371- getVersionFromTagAndCommits(" v2.2.2" , " feat!: WOW" , " release: 3.0.0" , " feat!: WOW" )
297+ " 3.0.0-Beta.1" ,
298+ " feat: new api\r\n\r\n A message\r\n\r\n BREAKING CHANGE: drop support"
299+ ),
300+ Arguments .of(
301+ " 3.0.0-Beta.1+001" ,
302+ " v2.2.2" ,
303+ " 2.2.3-Beta.1" ,
304+ " feat: new api\r\n\r\n A message\r\n\r\n BREAKING CHANGE: drop support"
305+ ),
306+ Arguments .of(" 2.3.0-NEXT.2+001" , " v2.2.2" , " 2.3.0-NEXT.1" , " feat: new" ),
307+ Arguments .of(" 2.3.0-NEXT.1+001" , " v2.2.2" , " 2.2.3-NEXT.1" , " feat: new" ),
308+ Arguments .of(" 2.3.0-SNAPSHOT+002" , " v2.2.2" , " 1.0.0-IGNORED" , " feat: new" ),
309+ Arguments .of(" 2.3.0-NEXT+001" , " v2.2.2" , " 2.2.3-NEXT" , " feat: new" )
310+ )
311+
312+ @JvmStatic
313+ fun `test update from commit testcases` () = listOf (
314+ Arguments .of(" 1.1.1-SNAPSHOT+003" , " v1.1.0" , arrayOf(" Commit 1" , " Commit 2" , " Commit 3" )),
315+ Arguments .of(" 1.2.1-SNAPSHOT+003" , " v1.2" , arrayOf(" Commit 1" , " Commit 2" , " Commit 3" )),
316+ Arguments .of(" 2.2.3-SNAPSHOT+001" , " v2.2.2" , arrayOf(" Commit 1" )),
317+ Arguments .of(
318+ " 0.3.0-SNAPSHOT+001" ,
319+ " v0.2.2" ,
320+ arrayOf(" feat!: Version 0 not updating major on breaking change" )
321+ ),
322+ Arguments .of(
323+ " 0.2.3-SNAPSHOT+001" ,
324+ " v0.2.2" ,
325+ arrayOf(" fix!: Version 0 not updating major on breaking change" )
326+ ),
327+ Arguments .of(" 3.0.0-SNAPSHOT+001" , " v2.2.2" , arrayOf(" refactor!: drop some support" )),
328+ Arguments .of(
329+ " 3.0.0-SNAPSHOT+001" ,
330+ " v2.2.2" , arrayOf(
331+ " feat: new api\r\n\r\n Replacing the old API\r\n\r\n BREAKING CHANGE: drop support"
332+ )
333+ ),
334+ Arguments .of(" 2.3.0-SNAPSHOT+001" , " v2.2.2" , arrayOf(" feat: new" )),
335+ Arguments .of(" 2.2.3-SNAPSHOT+001" , " v2.2.2" , arrayOf(" fix: bug" )),
336+ Arguments .of(" 1.0.1-SNAPSHOT+002" , " v1.0.0" , arrayOf(" fix: bug" , " fix: bug" )),
337+
338+ Arguments .of(" 3.0.0" , " v2.2.2" , arrayOf(" refactor!: drop some support" , " release: 3.0.0" )),
339+ Arguments .of(" 2.2.3" , " v2.2.2" , arrayOf(" fix: bug" , " release: 2.2.3" )),
340+ Arguments .of(" 1.0.2" , " v1.0.0" , arrayOf(" fix: bug" , " fix: bug" , " release: 1.0.2" )),
341+ Arguments .of(
342+ " 1.0.3-SNAPSHOT+002" ,
343+ " v1.0.0" ,
344+ arrayOf(" fix: bug" , " fix: bug" , " release: 1.0.2" , " fix: bug" , " fix: bug" )
345+ ),
346+ Arguments .of(" 2.3.0" , " v2.2.2" , arrayOf(" feat: wow" , " release: 2.3.0" )),
347+ Arguments .of(" 3.0.0" , " v2.2.2" , arrayOf(" feat!: WOW" , " release: 3.0.0" )),
348+ Arguments .of(" 2.2.4-SNAPSHOT+001" , " v2.2.2" , arrayOf(" fix: bug" , " release: 2.2.3" , " fix: bug" )),
349+ Arguments .of(" 2.3.1-SNAPSHOT+001" , " v2.2.2" , arrayOf(" feat: new" , " release: 2.3.0" , " fix: bug" )),
350+ Arguments .of(" 3.0.1-SNAPSHOT+001" , " v2.2.2" , arrayOf(" feat!: WOW" , " release: 3.0.0" , " fix: bug" )),
351+ Arguments .of(" 2.3.0-SNAPSHOT+001" , " v2.2.2" , arrayOf(" fix: bug" , " release: 2.2.3" , " feat: new" )),
352+ Arguments .of(" 2.4.0-SNAPSHOT+001" , " v2.2.2" , arrayOf(" feat: new" , " release: 2.3.0" , " feat: new" )),
353+ Arguments .of(" 3.1.0-SNAPSHOT+001" , " v2.2.2" , arrayOf(" feat!: WOW" , " release: 3.0.0" , " feat: new" )),
354+ Arguments .of(" 3.0.0-SNAPSHOT+001" , " v2.2.2" , arrayOf(" fix: bug" , " release: 2.2.3" , " feat!: WOW" )),
355+ Arguments .of(" 3.0.0-SNAPSHOT+001" , " v2.2.2" , arrayOf(" feat: new" , " release: 2.3.0" , " feat!: WOW" )),
356+ Arguments .of(" 4.0.0-SNAPSHOT+001" , " v2.2.2" , arrayOf(" feat!: WOW" , " release: 3.0.0" , " feat!: WOW" )),
372357 )
373358 }
374-
359+
375360 private fun getVersionFromTagAndCommits (tagName : String , vararg commits : String ): String {
376361 val commitList =
377362 commits.mapIndexed { idx, it -> " 000%02x" .format(idx) to it }.reversed() + Pair (FIRST , " release: $tagName " )
0 commit comments