@@ -6,22 +6,31 @@ import org.assertj.core.api.Assertions.*
66import org.eclipse.jgit.api.Git
77import org.junit.jupiter.api.BeforeEach
88import org.junit.jupiter.api.TestInfo
9+ import org.junit.jupiter.api.io.TempDir
910import org.junit.jupiter.params.ParameterizedTest
1011import org.junit.jupiter.params.provider.CsvSource
1112import java.io.File
13+ import java.nio.file.Files
14+ import java.nio.file.Path
1215import kotlin.test.*
1316
1417class GitProviderTest {
1518 private val tableStringFormat = " | %-45s | %-25s | %-20s |"
1619 private val tableSeparator = " | ${" -" .repeat(45 )} | ${" -" .repeat(25 )} | ${" -" .repeat(20 )} |"
1720 private val builder = StringBuilder ()
1821
22+ companion object {
23+ @TempDir
24+ lateinit var tempDir: Path
25+ }
26+
1927 @BeforeEach
2028 fun setUp (testInfo : TestInfo ) {
2129 builder.appendLine().appendLine(testInfo.displayName)
2230 }
2331
24- private fun printHead () {
32+ private fun printHead (gitDir : File ) {
33+ builder.appendLine(gitDir)
2534 builder.appendLine(tableSeparator).appendLine(
2635 tableStringFormat.format(
2736 " Command" ,
@@ -44,14 +53,13 @@ class GitProviderTest {
4453
4554 @Test
4655 fun testCommits_group () {
47- val gitDir = File (" build/integrationTest21" )
48- gitDir.mkdirs()
56+ val gitDir = getGitDir(" integrationTest21" )
4957
50- printHead()
58+ printHead(gitDir )
5159
5260 val gitProvider = GitProvider (SemverSettings ().apply { groupVersionIncrements = true })
5361 Git .init ().setDirectory(gitDir).call().use {
54- lotsOfCommits(it, gitProvider)
62+ lotsOfCommits(it, gitProvider, " release: 1.0.0 " )
5563
5664 val actual = release(gitProvider, it, " -" )
5765
@@ -63,14 +71,13 @@ class GitProviderTest {
6371
6472 @Test
6573 fun testCommits_no_grouping () {
66- val gitDir = File (" build/integrationTest22" )
67- gitDir.mkdirs()
74+ val gitDir = getGitDir(" integrationTest22" )
6875
69- printHead()
76+ printHead(gitDir )
7077
7178 val gitProvider = GitProvider (SemverSettings ().apply { groupVersionIncrements = false })
7279 Git .init ().setDirectory(gitDir).call().use {
73- lotsOfCommits(it, gitProvider)
80+ lotsOfCommits(it, gitProvider, " release: 1.0.0 " )
7481
7582 val actual = release(gitProvider, it, " -" )
7683
@@ -79,6 +86,26 @@ class GitProviderTest {
7986 printFoot()
8087 }
8188
89+ @Test
90+ fun testCommits_two_digit_version () {
91+ val gitDir = getGitDir(" integrationTest23" )
92+
93+ printHead(gitDir)
94+
95+ val gitProvider = GitProvider (SemverSettings ().apply {
96+ useTwoDigitVersion = true
97+ groupVersionIncrements = false
98+ })
99+ Git .init ().setDirectory(gitDir).call().use {
100+ lotsOfCommits(it, gitProvider, " release: 1.0" )
101+
102+ val actual = release(gitProvider, it, " -" )
103+
104+ assertEquals(" 3.0" , actual.toVersionString(useTwoDigitVersion = true ))
105+ }
106+ printFoot()
107+ }
108+
82109 @Test
83110 fun testGetChangeLog () {
84111 val actual = gitProvider().getChangeLog(File (" ." ))
@@ -88,12 +115,11 @@ class GitProviderTest {
88115
89116 @Test
90117 fun changeLog_before_release () {
91- val gitDir = File (" build/integrationTest31" )
92- gitDir.mkdirs()
118+ val gitDir = getGitDir(" integrationTest31" )
93119
94120 val gitProvider = GitProvider (SemverSettings ())
95121 Git .init ().setDirectory(gitDir).call().use {
96- lotsOfCommits(it, gitProvider)
122+ lotsOfCommits(it, gitProvider, " release: 1.0.0 " )
97123
98124 val actual = gitProvider().changeLog(it)
99125
@@ -104,14 +130,19 @@ class GitProviderTest {
104130 }
105131 }
106132
133+ private fun getGitDir (name : String ): File {
134+ val path = tempDir.resolve(name)
135+ Files .createDirectories(path)
136+ return path.toFile()
137+ }
138+
107139 @Test
108140 fun changeLog_after_release () {
109- val gitDir = File (" build/integrationTest32" )
110- gitDir.mkdirs()
141+ val gitDir = getGitDir(" integrationTest32" )
111142
112143 val gitProvider = GitProvider (SemverSettings ())
113144 Git .init ().setDirectory(gitDir).call().use {
114- lotsOfCommits(it, gitProvider)
145+ lotsOfCommits(it, gitProvider, " release: 1.0.0 " )
115146 release(gitProvider, it, " -" )
116147
117148 val actual = gitProvider().changeLog(it)
@@ -127,7 +158,6 @@ class GitProviderTest {
127158 @Test
128159 fun changeLog_stops_at_prerelease () {
129160 val gitDir = File (" build/integrationTest33" )
130- gitDir.mkdirs()
131161
132162 val gitProvider = GitProvider (SemverSettings ())
133163 Git .init ().setDirectory(gitDir).call().use {
@@ -149,9 +179,9 @@ class GitProviderTest {
149179 }
150180 }
151181
152- private fun lotsOfCommits (it : Git , gitProvider : GitProvider ) {
182+ private fun lotsOfCommits (it : Git , gitProvider : GitProvider , start : String ) {
153183 initOrReset(it, gitProvider)
154- commit(it, " release: 1.0.0 " , gitProvider)
184+ commit(it, start , gitProvider)
155185 commit(it, " build: some changes" , gitProvider)
156186 release(gitProvider, it)
157187 commit(it, " docs: updated readme" , gitProvider)
@@ -181,10 +211,9 @@ class GitProviderTest {
181211
182212 @Test
183213 fun testNoAutoBumpAndNoGroupingCommits_modified () {
184- val gitDir = File (" build/integrationTest7" )
185- gitDir.mkdirs()
186-
187- printHead()
214+ val gitDir = getGitDir(" integrationTest7" )
215+
216+ printHead(gitDir)
188217
189218 val gitProvider = GitProvider (SemverSettings ().apply { groupVersionIncrements = false ; noAutoBump = true })
190219 Git .init ().setDirectory(gitDir).call().use {
@@ -201,10 +230,9 @@ class GitProviderTest {
201230
202231 @Test
203232 fun testNoAutoBumpAndNoGroupingCommits_not_modified () {
204- val gitDir = File (" build/integrationTest8" )
205- gitDir.mkdirs()
233+ val gitDir = getGitDir(" integrationTest8" )
206234
207- printHead()
235+ printHead(gitDir )
208236
209237 val gitProvider = GitProvider (SemverSettings ().apply { groupVersionIncrements = false ; noAutoBump = true })
210238 Git .init ().setDirectory(gitDir).call().use {
@@ -220,10 +248,9 @@ class GitProviderTest {
220248
221249 @Test
222250 fun test_semver_snapshot_comparison_no_group () {
223- val gitDir = File (" build/integrationTest9" )
224- gitDir.mkdirs()
251+ val gitDir = getGitDir(" integrationTest9" )
225252
226- printHead()
253+ printHead(gitDir )
227254
228255 val gitProvider = GitProvider (SemverSettings ().apply { groupVersionIncrements = false ; noAutoBump = true })
229256 Git .init ().setDirectory(gitDir).call().use {
@@ -241,10 +268,9 @@ class GitProviderTest {
241268
242269 @Test
243270 fun test_semver_snapshot_comparison_group () {
244- val gitDir = File (" build/integrationTest10" )
245- gitDir.mkdirs()
271+ val gitDir = getGitDir(" integrationTest10" )
246272
247- printHead()
273+ printHead(gitDir )
248274
249275 val gitProvider = GitProvider (SemverSettings ().apply { groupVersionIncrements = true ; noAutoBump = true })
250276 Git .init ().setDirectory(gitDir).call().use {
@@ -290,15 +316,15 @@ class GitProviderTest {
290316 msg : String
291317 ): SemInfoVersion {
292318 val semVersion = gitProvider.semVersion(it)
293- builder.appendLine(tableStringFormat.format(cmd, msg, semVersion.toInfoVersionString()))
319+ builder.appendLine(tableStringFormat.format(cmd, msg,
320+ semVersion.toInfoVersionString(useTwoDigitVersion = gitProvider.settings.useTwoDigitVersion)))
294321 return semVersion
295322 }
296323
297324 @Test
298325 fun testCreateReleaseCommit () {
299- printHead()
300- val gitDir = File (" build/integrationTest" )
301- gitDir.mkdirs()
326+ val gitDir = getGitDir(" integrationTest" )
327+ printHead(gitDir)
302328
303329 val gitProvider = gitProvider()
304330
@@ -334,9 +360,8 @@ class GitProviderTest {
334360
335361 @Test
336362 fun testCreateReleaseCommit3 () {
337- printHead()
338- val gitDir = File (" build/integrationTest3" )
339- gitDir.mkdirs()
363+ val gitDir = getGitDir(" integrationTest3" )
364+ printHead(gitDir)
340365
341366 val gitProvider = gitProvider()
342367
@@ -358,8 +383,7 @@ class GitProviderTest {
358383
359384 @Test
360385 fun testEmptyRepo () {
361- val gitDir = File (" build/integrationTest4" )
362- gitDir.mkdirs()
386+ val gitDir = getGitDir(" integrationTest4" )
363387
364388 val gitProvider = gitProvider()
365389
@@ -370,8 +394,7 @@ class GitProviderTest {
370394
371395 @Test
372396 fun testNoDirtyCheck () {
373- val gitDir = File (" build/integrationTest5" )
374- gitDir.mkdirs()
397+ val gitDir = getGitDir(" integrationTest5" )
375398
376399 val gitProvider = GitProvider (SemverSettings ().apply { noDirtyCheck = true })
377400
@@ -381,12 +404,10 @@ class GitProviderTest {
381404 }
382405 }
383406
384-
385407 @Test
386408 fun testCreateReleaseCommit3_no_tag_or_commit () {
387- printHead()
388- val gitDir = File (" build/integrationTest6" )
389- gitDir.mkdirs()
409+ val gitDir = getGitDir(" integrationTest6" )
410+ printHead(gitDir)
390411
391412 val gitProvider = GitProvider (SemverSettings ().apply {
392413 releaseCommitTextFormat = " "
0 commit comments