diff options
author | Giteabot <teabot@gitea.io> | 2024-01-07 18:40:30 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-07 10:40:30 +0000 |
commit | 2399b4d483162e182fc09a3c7ffaf6359a0b4d90 (patch) | |
tree | dfa16f0a9d9bff8280f43e8e3dea5471ceb5b1d4 | |
parent | ad2cb9863c063c7d016baccda6fcd7aeb5518aad (diff) | |
download | gitea-2399b4d483162e182fc09a3c7ffaf6359a0b4d90.tar.gz gitea-2399b4d483162e182fc09a3c7ffaf6359a0b4d90.zip |
Avoid unnecessary 500 panic when a commit doesn't exist (#28719) (#28721)
Backport #28719 by wxiaoguang
In #26851, it assumed that `Commit` always exists when
`PageIsDiff==true`.
But for a 404 page, the `Commit` doesn't exist, so the following code
would cause panic because nil value can't be passed as string parameter
to `IsMultilineCommitMessage(string)` (or the StringUtils.Cut in later
PRs)
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
-rw-r--r-- | templates/base/head_opengraph.tmpl | 2 | ||||
-rw-r--r-- | tests/integration/repo_test.go | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/templates/base/head_opengraph.tmpl b/templates/base/head_opengraph.tmpl index 19d924610c..f1f38999d2 100644 --- a/templates/base/head_opengraph.tmpl +++ b/templates/base/head_opengraph.tmpl @@ -17,7 +17,7 @@ {{else if or .PageIsDiff .IsViewFile}} <meta property="og:title" content="{{.Title}}"> <meta property="og:url" content="{{AppUrl}}{{.Link}}"> - {{if .PageIsDiff}} + {{if and .PageIsDiff .Commit}} {{- $commitMessageParts := StringUtils.Cut .Commit.Message "\n" -}} {{- $commitMessageBody := index $commitMessageParts 1 -}} {{- if $commitMessageBody -}} diff --git a/tests/integration/repo_test.go b/tests/integration/repo_test.go index f5417b100c..f141b6dcb1 100644 --- a/tests/integration/repo_test.go +++ b/tests/integration/repo_test.go @@ -12,6 +12,7 @@ import ( "time" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/test" "code.gitea.io/gitea/tests" "github.com/PuerkitoBio/goquery" @@ -448,3 +449,12 @@ func TestGeneratedSourceLink(t *testing.T) { assert.Equal(t, "/user27/repo49/src/commit/aacbdfe9e1c4b47f60abe81849045fa4e96f1d75/test/test.txt", dataURL) }) } + +func TestViewCommit(t *testing.T) { + defer tests.PrepareTestEnv(t)() + + req := NewRequest(t, "GET", "/user2/repo1/commit/0123456789012345678901234567890123456789") + req.Header.Add("Accept", "text/html") + resp := MakeRequest(t, req, http.StatusNotFound) + assert.True(t, test.IsNormalPageCompleted(resp.Body.String()), "non-existing commit should render 404 page") +} |