Skip to content

Commit

Permalink
Only provide the commit summary for Discord webhook push events (#32432)
Browse files Browse the repository at this point in the history
Resolves #32371.

#31970 should have just showed the commit summary, but
`strings.SplitN()` was misused such that we did not perform any
splitting at all and just used the message. This was not caught in the
unit test made in that PR since the test commit summary was > 50 (which
truncated away the commit description).

This snapshot resolves this and adds another unit test to ensure that we
only show the commit summary.
  • Loading branch information
kemzeb authored and GiteaBot committed Nov 7, 2024
1 parent 16e51e9 commit f46e624
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
2 changes: 1 addition & 1 deletion services/webhook/discord.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ func (d discordConvertor) Push(p *api.PushPayload) (DiscordPayload, error) {
// for each commit, generate attachment text
for i, commit := range p.Commits {
// limit the commit message display to just the summary, otherwise it would be hard to read
message := strings.TrimRight(strings.SplitN(commit.Message, "\n", 1)[0], "\r")
message := strings.TrimRight(strings.SplitN(commit.Message, "\n", 2)[0], "\r")

// a limit of 50 is set because GitHub does the same
if utf8.RuneCountInString(message) > 50 {
Expand Down
16 changes: 15 additions & 1 deletion services/webhook/discord_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,26 @@ func TestDiscordPayload(t *testing.T) {
assert.Equal(t, p.Sender.AvatarURL, pl.Embeds[0].Author.IconURL)
})

t.Run("PushWithLongCommitMessage", func(t *testing.T) {
t.Run("PushWithMultilineCommitMessage", func(t *testing.T) {
p := pushTestMultilineCommitMessagePayload()

pl, err := dc.Push(p)
require.NoError(t, err)

assert.Len(t, pl.Embeds, 1)
assert.Equal(t, "[test/repo:test] 2 new commits", pl.Embeds[0].Title)
assert.Equal(t, "[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) chore: This is a commit summary - user1\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) chore: This is a commit summary - user1", pl.Embeds[0].Description)
assert.Equal(t, p.Sender.UserName, pl.Embeds[0].Author.Name)
assert.Equal(t, setting.AppURL+p.Sender.UserName, pl.Embeds[0].Author.URL)
assert.Equal(t, p.Sender.AvatarURL, pl.Embeds[0].Author.IconURL)
})

t.Run("PushWithLongCommitSummary", func(t *testing.T) {
p := pushTestPayloadWithCommitMessage("This is a commit summary ⚠️⚠️⚠️⚠️ containing 你好 ⚠️⚠️️\n\nThis is the message body")

pl, err := dc.Push(p)
require.NoError(t, err)

assert.Len(t, pl.Embeds, 1)
assert.Equal(t, "[test/repo:test] 2 new commits", pl.Embeds[0].Title)
assert.Equal(t, "[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) This is a commit summary ⚠️⚠️⚠️⚠️ containing 你好... - user1\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) This is a commit summary ⚠️⚠️⚠️⚠️ containing 你好... - user1", pl.Embeds[0].Description)
Expand Down
2 changes: 1 addition & 1 deletion services/webhook/general_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func pushTestPayload() *api.PushPayload {
}

func pushTestMultilineCommitMessagePayload() *api.PushPayload {
return pushTestPayloadWithCommitMessage("This is a commit summary ⚠️⚠️⚠️⚠️ containing 你好 ⚠️⚠️️\n\nThis is the message body.")
return pushTestPayloadWithCommitMessage("chore: This is a commit summary\n\nThis is a commit description.")
}

func pushTestPayloadWithCommitMessage(message string) *api.PushPayload {
Expand Down

0 comments on commit f46e624

Please sign in to comment.