Skip to content

Commit d658d42

Browse files
committed
Handle umlauts in marking exceeding characters
1 parent a360b1e commit d658d42

File tree

4 files changed

+16
-10
lines changed

4 files changed

+16
-10
lines changed

cmd/validate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func (h *Handler) validate() int {
3333

3434
message := fmt.Sprintf("Your subject exceeds the soft limit of 50 chars by %d chars.", numOfExceedingChars)
3535
h.notify(message, "yellow")
36-
h.notify(cm.Subject[:softLimit] + color.InYellow(cm.Subject[softLimit:]))
36+
h.notify(cm.Subject[:softLimit].String() + color.InYellow(cm.Subject[softLimit:].String()))
3737

3838
return 0
3939
}

cmd/validate_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func TestValidate(t *testing.T) {
2828
t.Run("returns 0 when soft limit exceeds and logs a warning", func(t *testing.T) {
2929
buffer.Reset()
3030
testFile := t.TempDir() + "/text.txt"
31-
err := os.WriteFile(testFile, []byte("i am two characters more thaaaaaaaaaaaaaaaaaaaaan 50"), 0666)
31+
err := os.WriteFile(testFile, []byte("i am two characters more thäaaaaaaaaaaaaaaaaaaaan 50"), 0666)
3232
assert.Nil(t, err)
3333
handler := NewHandler(model.Config{CommitMsgFile: testFile})
3434
handler.Writer = buffer
@@ -37,7 +37,7 @@ func TestValidate(t *testing.T) {
3737

3838
assert.Equal(t, status, 0)
3939
assert.Contains(t, buffer.String(), color.Yellow+"Your subject exceeds the soft limit of 50 chars by 2 chars.")
40-
assert.Contains(t, buffer.String(), "i am two characters more thaaaaaaaaaaaaaaaaaaaaan "+color.Yellow+"50")
40+
assert.Contains(t, buffer.String(), "i am two characters more thäaaaaaaaaaaaaaaaaaaaan "+color.Yellow+"50")
4141
})
4242

4343
t.Run("returns 1 when commit message too long", func(t *testing.T) {

internal/model/commit_message.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import (
44
"strings"
55
)
66

7+
type Subject []rune
8+
79
type CommitMessage struct {
8-
Subject string
10+
Subject Subject
911
Body []string
1012
InvalidBody bool
1113
}
@@ -19,9 +21,9 @@ func CreateCommitMessageFrom(messageLines []string) *CommitMessage {
1921
}
2022

2123
func (cm *CommitMessage) ValidateSubject() int {
22-
currentSubjectLength := len([]rune(cm.Subject))
24+
currentSubjectLength := len(cm.Subject)
2325

24-
if strings.HasPrefix(cm.Subject, "Merge ") {
26+
if strings.HasPrefix(cm.Subject.String(), "Merge ") {
2527
return 0
2628
}
2729

@@ -32,9 +34,13 @@ func (cm *CommitMessage) ValidateSubject() int {
3234
return 0
3335
}
3436

37+
func (s Subject) String() string {
38+
return string(s)
39+
}
40+
3541
func (cm *CommitMessage) addSubject(messageLines []string) {
3642
if len(messageLines) >= 1 {
37-
cm.Subject = messageLines[0]
43+
cm.Subject = []rune(messageLines[0])
3844
}
3945
}
4046

internal/model/commit_message_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func TestNewCommitMessage(t *testing.T) {
1919
t.Run("create new commit message object from File", func(t *testing.T) {
2020
cm := CreateCommitMessageFrom(validCommitMsgLines)
2121

22-
assert.Equal(t, "I am a valid Subject with less than 50 characters", cm.Subject)
22+
assert.Equal(t, "I am a valid Subject with less than 50 characters", cm.Subject.String())
2323
assert.Len(t, cm.Body, 3)
2424
assert.False(t, cm.InvalidBody)
2525
})
@@ -28,7 +28,7 @@ func TestNewCommitMessage(t *testing.T) {
2828
var emptyCommitMsgLines []string
2929
cm := CreateCommitMessageFrom(emptyCommitMsgLines)
3030

31-
assert.Equal(t, "", cm.Subject)
31+
assert.Equal(t, "", cm.Subject.String())
3232
assert.Len(t, cm.Body, 0)
3333
})
3434

@@ -41,7 +41,7 @@ func TestNewCommitMessage(t *testing.T) {
4141
cm := CreateCommitMessageFrom(invalidCommitMsgLines)
4242

4343
t.Run("sets body correct", func(t *testing.T) {
44-
assert.Equal(t, "subject line", cm.Subject)
44+
assert.Equal(t, "subject line", cm.Subject.String())
4545
assert.Len(t, cm.Body, 2)
4646
})
4747

0 commit comments

Comments
 (0)