Skip to content

Commit a84e87e

Browse files
committed
Add tests for CommitMessageTrailersPattern
- add support for Key:Value (no space after colon) - add support for whitespace "folding"
1 parent 45b1b78 commit a84e87e

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

services/pull/pull.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ func CloseRepoBranchesPulls(doer *models.User, repo *models.Repository) error {
517517
return nil
518518
}
519519

520-
var commitMessageTrailersPattern = regexp.MustCompile(`(?:^|\n\n)(?:[\w-]+: [^\n]+\n*)+$`)
520+
var commitMessageTrailersPattern = regexp.MustCompile(`(?:^|\n\n)(?:[\w-]+[ \t]*:[^\n]+\n*(?:[ \t]+[^\n]+\n*)*)+$`)
521521

522522
// GetSquashMergeCommitMessages returns the commit messages between head and merge base (if there is one)
523523
func GetSquashMergeCommitMessages(pr *models.PullRequest) string {

services/pull/pull_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,27 @@
55

66
package pull
77

8+
import (
9+
"testing"
10+
11+
"github.com/stretchr/testify/assert"
12+
)
13+
814
// TODO TestPullRequest_PushToBaseRepo
15+
16+
func TestPullRequest_CommitMessageTrailersPattern(t *testing.T) {
17+
// Not a valid trailer section
18+
assert.False(t, commitMessageTrailersPattern.MatchString(""))
19+
assert.False(t, commitMessageTrailersPattern.MatchString("No trailer."))
20+
assert.False(t, commitMessageTrailersPattern.MatchString("Signed-off-by: Bob <[email protected]>\nNot a trailer due to following text."))
21+
assert.False(t, commitMessageTrailersPattern.MatchString("Message body not correctly separated from trailer section by empty line.\nSigned-of-by: Bob <[email protected]>"))
22+
// Valid trailer section
23+
assert.True(t, commitMessageTrailersPattern.MatchString("Signed-off-by: Bob <[email protected]>"))
24+
assert.True(t, commitMessageTrailersPattern.MatchString("Signed-off-by: Bob <[email protected]>\nOther-Trailer: Value"))
25+
assert.True(t, commitMessageTrailersPattern.MatchString("Message body correctly separated from trailer section by empty line.\n\nSigned-off-by: Bob <[email protected]>"))
26+
assert.True(t, commitMessageTrailersPattern.MatchString("Multiple trailers.\n\nSigned-off-by: Bob <[email protected]>\nOther-Trailer: Value"))
27+
assert.True(t, commitMessageTrailersPattern.MatchString("Newline after trailer section.\n\nSigned-off-by: Bob <[email protected]>\n"))
28+
assert.True(t, commitMessageTrailersPattern.MatchString("No space after colon is accepted.\n\nSigned-off-by:Bob <[email protected]>"))
29+
assert.True(t, commitMessageTrailersPattern.MatchString("Additional whitespace is accepted.\n\nSigned-off-by \t : \tBob <[email protected]> "))
30+
assert.True(t, commitMessageTrailersPattern.MatchString("Folded value.\n\nFolded-trailer: This is\n a folded\n trailer value\nOther-Trailer: Value"))
31+
}

0 commit comments

Comments
 (0)