Skip to content

Commit 7a573b9

Browse files
author
Joel Mongård
committed
test: Added more test
1 parent b54dbef commit 7a573b9

File tree

4 files changed

+114
-48
lines changed

4 files changed

+114
-48
lines changed

src/main/kotlin/git/semver/plugin/scm/GitProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import org.slf4j.LoggerFactory
1515
import java.io.File
1616
import java.util.*
1717

18-
internal class GitProvider(private val settings: SemverSettings) {
18+
internal class GitProvider(internal val settings: SemverSettings) {
1919
companion object {
2020
private const val REF_PREFIX = "refs/tags/"
2121
private val logger = LoggerFactory.getLogger(GitProvider::class.java)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package git.semver.plugin.changelog
2+
3+
import org.assertj.core.api.Assertions.*
4+
import org.junit.jupiter.api.Test
5+
6+
class EmojisLastChangeLogTextsTest {
7+
8+
@Test
9+
fun `has same texts heder text keys as PlainChangeLogTexts`() {
10+
assertThat(EmojisLastChangeLogTexts.headerTexts)
11+
.containsOnlyKeys(PlainChangeLogTexts.headerTexts.keys)
12+
}
13+
}

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

Lines changed: 67 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,31 @@ import org.assertj.core.api.Assertions.*
66
import org.eclipse.jgit.api.Git
77
import org.junit.jupiter.api.BeforeEach
88
import org.junit.jupiter.api.TestInfo
9+
import org.junit.jupiter.api.io.TempDir
910
import org.junit.jupiter.params.ParameterizedTest
1011
import org.junit.jupiter.params.provider.CsvSource
1112
import java.io.File
13+
import java.nio.file.Files
14+
import java.nio.file.Path
1215
import kotlin.test.*
1316

1417
class 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 = ""

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

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,36 @@ class SemVersionFinderTest {
129129
assertEquals("0.5.6-SNAPSHOT", versions.toSemVersion().toString())
130130
}
131131

132+
@Test
133+
fun multiple_release_tags_branching_two_digit_version() {
134+
// given
135+
val tags = listOf(
136+
Tag("v0.4.0", "SHA0")
137+
)
138+
139+
val a0 = Commit("a msg1", "SHA0", 0, sequenceOf())
140+
val a1 = Commit("feat: a feature", "SHA1", 1, sequenceOf(a0))
141+
val a2 = Commit("a msg3", "SHA2", 2, sequenceOf(a1))
142+
143+
val b0 = Commit("fix: test 11", "SHA11", 3, sequenceOf(a2))
144+
val b1 = Commit("fix: test 12", "SHA12", 4, sequenceOf(b0))
145+
val b2 = Commit("fix: test 13", "SHA13", 5, sequenceOf(b1))
146+
147+
val c0 = Commit("feat: test 21", "SHA21", 6, sequenceOf(a2))
148+
val c1 = Commit("feat: test 22", "SHA22", 7, sequenceOf(c0))
149+
150+
val d0 = Commit("merge msg", "SHA31", 8, sequenceOf(b2, c1))
151+
val d1 = Commit("fix: msg", "SHA32", 9, sequenceOf(d0))
152+
153+
// when
154+
val versions = getVersion(tags, d1, twoDigitVersion = false)
155+
156+
// then
157+
assertEquals("0.5-SNAPSHOT", versions.toVersionString(useTwoDigitVersion = true))
158+
assertEquals("0.5-SNAPSHOT+009", versions.toInfoVersionString(useTwoDigitVersion = true))
159+
assertEquals("0.5-SNAPSHOT", versions.toSemVersion().toString(useTwoDigitVersion = true))
160+
}
161+
132162
@Test
133163
fun prerelease_no_grouping() {
134164
// given
@@ -521,11 +551,13 @@ class SemVersionFinderTest {
521551
commit: Commit,
522552
dirty: Boolean = false,
523553
groupVersions: Boolean = true,
524-
disableAutoBump: Boolean = false
554+
disableAutoBump: Boolean = false,
555+
twoDigitVersion: Boolean = false
525556
): SemInfoVersion {
526557
val settings = SemverSettings().apply {
527558
groupVersionIncrements = groupVersions
528559
noAutoBump = disableAutoBump
560+
useTwoDigitVersion = twoDigitVersion
529561
}
530562
return VersionFinder(settings, tags.groupBy { it.sha }).getVersion(commit, !dirty, "SNAPSHOT")
531563
}

0 commit comments

Comments
 (0)