]> source.dussan.org Git - gitea.git/commitdiff
Only provide the commit summary for Discord webhook push events (#32432) (#32447)
authorGiteabot <teabot@gitea.io>
Fri, 8 Nov 2024 01:13:49 +0000 (09:13 +0800)
committerGitHub <noreply@github.com>
Fri, 8 Nov 2024 01:13:49 +0000 (09:13 +0800)
Backport #32432 by @kemzeb

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.

Co-authored-by: Kemal Zebari <60799661+kemzeb@users.noreply.github.com>
services/webhook/discord.go
services/webhook/discord_test.go
services/webhook/general_test.go

index f93337e53a48c8c44558d621ce5f05a942ad5d98..21757953423f49f1d72c14c3dea7cdda5f25773e 100644 (file)
@@ -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 {
index fbb4b24ef12dda3ba28e9e8acd74a642cba98fbe..36b99d452ea8e4b72874b59392ccec60a41a0790 100644 (file)
@@ -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)
index 04c6b595a8aab62bf37deda1c6b4d15355da515b..3feda2b09e8a5925babea681caf975ead870cc03 100644 (file)
@@ -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 {