Skip to content

Commit aa80a2e

Browse files
test: add test for multi line footer, header, blank line
1 parent 6617db1 commit aa80a2e

4 files changed

Lines changed: 72 additions & 2 deletions

File tree

parser_test.go

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"testing"
88

99
"github.com/conventionalcommit/parser"
10-
"github.com/stretchr/testify/assert"
1110
"github.com/stretchr/testify/suite"
1211
)
1312

@@ -47,6 +46,21 @@ var commitFooters = parser.Footer{
4746
},
4847
}
4948

49+
var multiLineFooters = parser.Footer{
50+
Notes: []parser.FooterNote{
51+
{
52+
Token: "footer",
53+
Value: `multi line footer
54+
message is here
55+
`,
56+
},
57+
{
58+
Token: "hash-footer",
59+
Value: "123",
60+
},
61+
},
62+
}
63+
5064
func TestParser(t *testing.T) {
5165
ps := &parserSuite{}
5266
suite.Run(t, ps)
@@ -260,6 +274,51 @@ func (s *parserSuite) TestBreakingChangeDescriptionScopeBodyFooters() {
260274
s.parseMsgAndCompare("breaking_change_description_scope_body_footers", expectedCommit)
261275
}
262276

277+
func (s *parserSuite) TestFooterMultiLine() {
278+
expectedCommit := &parser.Commit{
279+
Header: parser.Header{
280+
Type: commitType,
281+
Description: commitDescription,
282+
},
283+
Footer: multiLineFooters,
284+
}
285+
s.parseMsgAndCompare("footer_multi_line", expectedCommit)
286+
}
287+
288+
func (s *parserSuite) TestErrNoBlankLine() {
289+
t := s.T()
290+
291+
fileName := "err_no_blank_line"
292+
293+
commitMsg := s.loadCommitMsgFromFile(filepath.Join(testDataDir, fileName))
294+
_, err := parser.Parse(commitMsg)
295+
if err == nil {
296+
t.Errorf("no error: test file %v passed", fileName)
297+
return
298+
}
299+
300+
if !parser.IsNoBlankLineErr(err) {
301+
t.Error("error is not NoBlankLineErr error", err)
302+
}
303+
}
304+
305+
func (s *parserSuite) TestErrHeaderLine() {
306+
t := s.T()
307+
308+
fileName := "err_header_line"
309+
310+
commitMsg := s.loadCommitMsgFromFile(filepath.Join(testDataDir, fileName))
311+
_, err := parser.Parse(commitMsg)
312+
if err == nil {
313+
t.Errorf("no error: test file %v passed", fileName)
314+
return
315+
}
316+
317+
if !parser.IsHeaderErr(err) {
318+
t.Error("error is not HeaderErr error", err)
319+
}
320+
}
321+
263322
func (s *parserSuite) parseMsgAndCompare(fileName string, expectedCommit *parser.Commit) {
264323
t := s.T()
265324
t.Helper()
@@ -285,7 +344,7 @@ func (s *parserSuite) loadCommitMsgFromFile(fileName string) string {
285344

286345
out, err := os.ReadFile(fileName)
287346
if err != nil {
288-
assert.Failf(t, "error in test setup", "unable to load file %s", fileName)
347+
t.Errorf("error in test setup; unable to load file %s", fileName)
289348
}
290349
return strings.TrimSpace(string(out))
291350
}

testdata/err_header_line

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
!feat(scope1)!:A description with name.txt

testdata/err_no_blank_line

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
type(scope): description message
2+
This is a multiline commit body.
3+
4+
This is the second line

testdata/footer_multi_line

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
type: description message
2+
3+
footer: multi line footer
4+
message is here
5+
6+
hash-footer #123

0 commit comments

Comments
 (0)