Skip to content

Commit 2a3ac1a

Browse files
committed
test: improve parse result assertions
1 parent 1a053ce commit 2a3ac1a

File tree

1 file changed

+37
-23
lines changed

1 file changed

+37
-23
lines changed

src/test/kotlin/com/github/lppedd/cc/parser/ConventionalCommitParserTest.kt

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,45 +8,45 @@ class ConventionalCommitParserTest {
88
@Test
99
fun `fail incomplete`() {
1010
var result = parseConventionalCommit("f!x")
11-
assertIs<ParseResult.Error>(result)
11+
assertError(result)
1212
assertEquals("The ':' separator is missing after the type/scope", result.message)
1313

1414
result = parseConventionalCommit("!fix")
15-
assertIs<ParseResult.Error>(result)
15+
assertError(result)
1616
assertEquals("The commit type is missing or invalid", result.message)
1717

1818
result = parseConventionalCommit("fix: ")
19-
assertIs<ParseResult.Error>(result)
19+
assertError(result)
2020
assertEquals("The commit subject is missing or invalid", result.message)
2121

2222
result = parseConventionalCommit("build(np: ")
23-
assertIs<ParseResult.Error>(result)
23+
assertError(result)
2424
assertEquals("The commit scope is missing the closing parenthesis", result.message)
2525

2626
result = parseConventionalCommit("build(npm)")
27-
assertIs<ParseResult.Error>(result)
27+
assertError(result)
2828
assertEquals("The ':' separator is missing after the type/scope", result.message)
2929
}
3030

3131
@Test
3232
fun `parse incomplete`() {
3333
var result = parseConventionalCommit("fix: ", lenient = true)
34-
assertIs<ParseResult.Success>(result)
34+
assertSuccess(result)
3535

3636
var message = result.message
3737
assertEquals("fix", message.type)
3838
assertEquals(" ", message.subject)
3939

4040
result = parseConventionalCommit("build(np: ", lenient = true)
41-
assertIs<ParseResult.Success>(result)
41+
assertSuccess(result)
4242

4343
message = result.message
4444
assertEquals("build", message.type)
4545
assertEquals("np: ", message.scope)
4646
assertEquals("", message.subject)
4747

4848
result = parseConventionalCommit("build(npm)", lenient = true)
49-
assertIs<ParseResult.Success>(result)
49+
assertSuccess(result)
5050

5151
message = result.message
5252
assertEquals("build", message.type)
@@ -57,7 +57,7 @@ class ConventionalCommitParserTest {
5757
@Test
5858
fun `parse one liner`() {
5959
val result = parseConventionalCommit("fix: foo")
60-
assertIs<ParseResult.Success>(result)
60+
assertSuccess(result)
6161

6262
val message = result.message
6363
assertEquals("fix", message.type)
@@ -68,7 +68,7 @@ class ConventionalCommitParserTest {
6868
@Test
6969
fun `parse unusual type`() {
7070
val result = parseConventionalCommit("bui!ld!: foo")
71-
assertIs<ParseResult.Success>(result)
71+
assertSuccess(result)
7272

7373
val message = result.message
7474
assertEquals("bui!ld", message.type)
@@ -80,15 +80,15 @@ class ConventionalCommitParserTest {
8080
@Test
8181
fun `parse empty scope`() {
8282
var result = parseConventionalCommit("build(): bar")
83-
assertIs<ParseResult.Success>(result)
83+
assertSuccess(result)
8484

8585
var message = result.message
8686
assertEquals("build", message.type)
8787
assertEquals("", message.scope)
8888
assertEquals("bar", message.subject.trim())
8989

9090
result = parseConventionalCommit("build( ): bar")
91-
assertIs<ParseResult.Success>(result)
91+
assertSuccess(result)
9292

9393
message = result.message
9494
assertEquals("build", message.type)
@@ -99,7 +99,7 @@ class ConventionalCommitParserTest {
9999
@Test
100100
fun `parse scope with breaking change`() {
101101
val result = parseConventionalCommit("build(foo)!: bar")
102-
assertIs<ParseResult.Success>(result)
102+
assertSuccess(result)
103103

104104
val message = result.message
105105
assertEquals("build", message.type)
@@ -119,7 +119,7 @@ class ConventionalCommitParserTest {
119119
""".trimMargin()
120120
)
121121

122-
assertIs<ParseResult.Success>(result)
122+
assertSuccess(result)
123123

124124
val message = result.message
125125
assertEquals("refactor", message.type)
@@ -142,7 +142,7 @@ class ConventionalCommitParserTest {
142142
""".trimMargin()
143143
)
144144

145-
assertIs<ParseResult.Success>(result)
145+
assertSuccess(result)
146146

147147
val message = result.message
148148
assertEquals("refactor", message.type)
@@ -176,7 +176,7 @@ class ConventionalCommitParserTest {
176176
""".trimMargin()
177177
)
178178

179-
assertIs<ParseResult.Success>(result)
179+
assertSuccess(result)
180180

181181
val message = result.message
182182
assertEquals("refactor", message.type)
@@ -218,7 +218,7 @@ class ConventionalCommitParserTest {
218218
""".trimMargin()
219219
)
220220

221-
assertIs<ParseResult.Success>(result)
221+
assertSuccess(result)
222222

223223
val message = result.message
224224
assertEquals("build", message.type)
@@ -247,7 +247,7 @@ class ConventionalCommitParserTest {
247247
""".trimMargin()
248248
)
249249

250-
assertIs<ParseResult.Success>(result)
250+
assertSuccess(result)
251251

252252
val message = result.message
253253
assertEquals("build", message.type)
@@ -278,7 +278,7 @@ class ConventionalCommitParserTest {
278278
lenient = true,
279279
)
280280

281-
assertIs<ParseResult.Success>(result)
281+
assertSuccess(result)
282282

283283
val message = result.message
284284
assertEquals("build", message.type)
@@ -291,13 +291,27 @@ class ConventionalCommitParserTest {
291291
assertEquals("", value)
292292
}
293293

294-
private inline fun <reified T> assertIs(value: Any?): Boolean {
294+
private fun assertSuccess(value: ParseResult): Boolean {
295295
contract {
296-
returns() implies (value is T)
296+
returns() implies (value is ParseResult.Success)
297297
}
298298

299-
if (value !is T) {
300-
fail("Expected a value of type ${T::class.java.name}")
299+
when (value) {
300+
is ParseResult.Success -> {}
301+
is ParseResult.Error -> fail("Expected a success result but got an error result: ${value.message}")
302+
}
303+
304+
return true
305+
}
306+
307+
private fun assertError(value: ParseResult): Boolean {
308+
contract {
309+
returns() implies (value is ParseResult.Error)
310+
}
311+
312+
when (value) {
313+
is ParseResult.Success -> fail("Expected an error result but got a success result")
314+
is ParseResult.Error -> {}
301315
}
302316

303317
return true

0 commit comments

Comments
 (0)