Skip to content

Commit 694ac7e

Browse files
committed
refactor: require a subject separator even in lenient mode
1 parent 30d872d commit 694ac7e

File tree

2 files changed

+9
-28
lines changed

2 files changed

+9
-28
lines changed

src/main/kotlin/com/github/lppedd/cc/parser/ConventionalCommitParser.kt

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -58,35 +58,24 @@ internal fun parseConventionalCommit(message: String, lenient: Boolean = false):
5858
return ParseResult.Error("The commit type '$type' is invalid")
5959
}
6060

61+
// These messages are valid:
62+
// 'build( ): updated dev dependencies'
63+
// 'build(): updated dev dependencies'
6164
var scope: String? = null
6265

6366
if (reader.consumeIf(CCToken.Type.SCOPE_OPEN_PAREN)) {
64-
scope = reader.consume(CCToken.Type.SCOPE)
65-
val hasCloseParen = reader.consumeIf(CCToken.Type.SCOPE_CLOSE_PAREN)
67+
scope = reader.consume(CCToken.Type.SCOPE) ?: ""
6668

67-
if (scope.isNullOrBlank()) {
68-
if (!lenient && !hasCloseParen) {
69-
return ParseResult.Error("The commit scope is missing or invalid")
70-
}
71-
72-
// These messages are valid:
73-
// 'build( ): updated dev dependencies'
74-
// 'build(): updated dev dependencies'
75-
scope = scope ?: ""
76-
}
77-
78-
// In lenient mode this message without closing parenthesis is valid:
79-
// 'build(np '
80-
if (!lenient && !hasCloseParen) {
69+
if (!reader.consumeIf(CCToken.Type.SCOPE_CLOSE_PAREN)) {
8170
return ParseResult.Error("The commit scope is missing the closing parenthesis")
8271
}
8372
}
8473

8574
val isBreakingChange = reader.consume(CCToken.Type.BREAKING_CHANGE) != null
8675

87-
// In lenient mode this message without a subject separator is valid:
88-
// 'build(npm)'
89-
if (!reader.consumeIf(CCToken.Type.SEPARATOR) && !lenient) {
76+
// The ':' subject separator is required to recognize a Conventional Commits message,
77+
// even in lenient mode
78+
if (!reader.consumeIf(CCToken.Type.SEPARATOR)) {
9079
return ParseResult.Error("The ':' separator is missing after the type/scope")
9180
}
9281

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

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,7 @@ class ConventionalCommitParserTest {
4141
assertEquals("fix", message.type)
4242
assertEquals(" ", message.subject)
4343

44-
result = parseConventionalCommit("build(np: ", lenient = true)
45-
assertSuccess(result)
46-
47-
message = result.message
48-
assertEquals("build", message.type)
49-
assertEquals("np: ", message.scope)
50-
assertEquals("", message.subject)
51-
52-
result = parseConventionalCommit("build(npm)", lenient = true)
44+
result = parseConventionalCommit("build(npm):", lenient = true)
5345
assertSuccess(result)
5446

5547
message = result.message

0 commit comments

Comments
 (0)