diff --git a/approval.go b/approval.go index f67f74d..6bb777e 100644 --- a/approval.go +++ b/approval.go @@ -126,7 +126,7 @@ func approversIndex(approvers []string, name string) int { func isApproved(commentBody string) (bool, error) { for _, approvedWord := range approvedWords { - matched, err := regexp.MatchString(fmt.Sprintf("(?i)^%s[.!]?$", approvedWord), commentBody) + matched, err := regexp.MatchString(fmt.Sprintf("(?i)^%s[.!]*\n*$", approvedWord), commentBody) if err != nil { return false, err } diff --git a/approval_test.go b/approval_test.go index c4114ac..5d7f219 100644 --- a/approval_test.go +++ b/approval_test.go @@ -215,6 +215,11 @@ func TestApprovedCommentBody(t *testing.T) { commentBody: "Approved!", isSuccess: true, }, + { + name: "approved_titlecase_multi_exclamation", + commentBody: "Approved!!", + isSuccess: true, + }, { name: "approved_titlecase_question", commentBody: "Approved?", @@ -230,6 +235,21 @@ func TestApprovedCommentBody(t *testing.T) { commentBody: "this is just some random comment", isSuccess: false, }, + { + name: "approved_with_newline", + commentBody: "approved\n", + isSuccess: true, + }, + { + name: "approved_with_exclamation_newline", + commentBody: "approved!\n", + isSuccess: true, + }, + { + name: "approved_with_multi_exclamation_multi_newline", + commentBody: "approved!!!\n\n\n", + isSuccess: true, + }, } for _, testCase := range testCases {