From 7e436972f985610a3269c71cfbfb7ec56faf71ad Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Tue, 19 May 2026 16:08:08 +0000 Subject: [PATCH] fix(markup): make RenderString never fail (#37779) Fix #37778 --------- Signed-off-by: wxiaoguang Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: wxiaoguang <2114189+wxiaoguang@users.noreply.github.com> Co-authored-by: wxiaoguang Co-authored-by: Nicolas --- models/renderhelper/main_test.go | 7 +++++++ models/renderhelper/repo_comment_test.go | 9 ++++----- models/renderhelper/repo_file_test.go | 13 ++++++------- models/renderhelper/repo_wiki_test.go | 7 +++---- models/renderhelper/simple_document_test.go | 3 +-- modules/markup/html_codepreview_test.go | 2 +- modules/markup/html_test.go | 16 +++++++++++----- modules/markup/markdown/markdown.go | 5 ++++- modules/markup/render.go | 9 --------- 9 files changed, 37 insertions(+), 34 deletions(-) diff --git a/models/renderhelper/main_test.go b/models/renderhelper/main_test.go index 331450172a6..311207e855c 100644 --- a/models/renderhelper/main_test.go +++ b/models/renderhelper/main_test.go @@ -5,12 +5,19 @@ package renderhelper import ( "context" + "strings" "testing" "code.gitea.io/gitea/models/unittest" "code.gitea.io/gitea/modules/markup" ) +func testRenderString(ctx *markup.RenderContext, content string) (string, error) { + var buf strings.Builder + err := markup.Render(ctx, strings.NewReader(content), &buf) + return buf.String(), err +} + func TestMain(m *testing.M) { unittest.MainTest(m, &unittest.TestOptions{ FixtureFiles: []string{"repository.yml", "user.yml"}, diff --git a/models/renderhelper/repo_comment_test.go b/models/renderhelper/repo_comment_test.go index 1443f8b3c02..e181a5bdb56 100644 --- a/models/renderhelper/repo_comment_test.go +++ b/models/renderhelper/repo_comment_test.go @@ -8,7 +8,6 @@ import ( repo_model "code.gitea.io/gitea/models/repo" "code.gitea.io/gitea/models/unittest" - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" "github.com/stretchr/testify/assert" @@ -21,7 +20,7 @@ func TestRepoComment(t *testing.T) { t.Run("AutoLink", func(t *testing.T) { rctx := NewRenderContextRepoComment(t.Context(), repo1).WithMarkupType(markdown.MarkupName) - rendered, err := markup.RenderString(rctx, ` + rendered, err := testRenderString(rctx, ` 65f1bf27bc3bf70f64657658635e66094edbcb4d #1 @user2 @@ -39,7 +38,7 @@ func TestRepoComment(t *testing.T) { // It is Gitea's old behavior, the relative path is resolved to the repo path // It is different from GitHub, GitHub resolves relative links to current page's path - rendered, err := markup.RenderString(rctx, ` + rendered, err := testRenderString(rctx, ` [/test](/test) [./test](./test) ![/image](/image) @@ -59,7 +58,7 @@ func TestRepoComment(t *testing.T) { WithMarkupType(markdown.MarkupName) // the ref path is only used to render commit message: a commit message is rendered at the commit page with its commit ID path - rendered, err := markup.RenderString(rctx, ` + rendered, err := testRenderString(rctx, ` [/test](/test) [./test](./test) ![/image](/image) @@ -75,7 +74,7 @@ func TestRepoComment(t *testing.T) { t.Run("NoRepo", func(t *testing.T) { rctx := NewRenderContextRepoComment(t.Context(), nil).WithMarkupType(markdown.MarkupName) - rendered, err := markup.RenderString(rctx, "any") + rendered, err := testRenderString(rctx, "any") assert.NoError(t, err) assert.Equal(t, "

any

\n", rendered) }) diff --git a/models/renderhelper/repo_file_test.go b/models/renderhelper/repo_file_test.go index 72d98efc66e..cb2852b3e3b 100644 --- a/models/renderhelper/repo_file_test.go +++ b/models/renderhelper/repo_file_test.go @@ -8,7 +8,6 @@ import ( repo_model "code.gitea.io/gitea/models/repo" "code.gitea.io/gitea/models/unittest" - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" _ "code.gitea.io/gitea/modules/markup/orgmode" @@ -22,7 +21,7 @@ func TestRepoFile(t *testing.T) { t.Run("AutoLink", func(t *testing.T) { rctx := NewRenderContextRepoFile(t.Context(), repo1).WithMarkupType(markdown.MarkupName) - rendered, err := markup.RenderString(rctx, ` + rendered, err := testRenderString(rctx, ` 65f1bf27bc3bf70f64657658635e66094edbcb4d #1 @user2 @@ -38,7 +37,7 @@ func TestRepoFile(t *testing.T) { t.Run("AbsoluteAndRelative", func(t *testing.T) { rctx := NewRenderContextRepoFile(t.Context(), repo1, RepoFileOptions{CurrentRefSubURL: "branch/main"}). WithMarkupType(markdown.MarkupName) - rendered, err := markup.RenderString(rctx, ` + rendered, err := testRenderString(rctx, ` [/test](/test) [./test](./test) ![/image](/image) @@ -56,7 +55,7 @@ func TestRepoFile(t *testing.T) { t.Run("WithCurrentRefSubURL", func(t *testing.T) { rctx := NewRenderContextRepoFile(t.Context(), repo1, RepoFileOptions{CurrentRefSubURL: "/commit/1234"}). WithMarkupType(markdown.MarkupName) - rendered, err := markup.RenderString(rctx, ` + rendered, err := testRenderString(rctx, ` [/test](/test) ![/image](/image) `) @@ -72,7 +71,7 @@ func TestRepoFile(t *testing.T) { CurrentTreePath: "my-dir", }). WithMarkupType(markdown.MarkupName) - rendered, err := markup.RenderString(rctx, ` + rendered, err := testRenderString(rctx, `