Refactor markup render system (#32589)
This PR mainly moves some code and introduces `RenderContext.WithXxx` functions
This commit is contained in:
parent
81ac8d914c
commit
c4e27cb27b
49 changed files with 486 additions and 626 deletions
|
@ -4,12 +4,12 @@
|
|||
package markup
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"code.gitea.io/gitea/modules/git"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
testModule "code.gitea.io/gitea/modules/test"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
|
@ -79,11 +79,11 @@ func TestRender_IssueIndexPattern(t *testing.T) {
|
|||
// numeric: render inputs without valid mentions
|
||||
test := func(s string) {
|
||||
testRenderIssueIndexPattern(t, s, s, &RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
ctx: context.Background(),
|
||||
})
|
||||
testRenderIssueIndexPattern(t, s, s, &RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Metas: numericMetas,
|
||||
ctx: context.Background(),
|
||||
RenderOptions: RenderOptions{Metas: numericMetas},
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -133,8 +133,8 @@ func TestRender_IssueIndexPattern2(t *testing.T) {
|
|||
}
|
||||
expectedNil := fmt.Sprintf(expectedFmt, links...)
|
||||
testRenderIssueIndexPattern(t, s, expectedNil, &RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Metas: localMetas,
|
||||
ctx: context.Background(),
|
||||
RenderOptions: RenderOptions{Metas: localMetas},
|
||||
})
|
||||
|
||||
class := "ref-issue"
|
||||
|
@ -147,8 +147,8 @@ func TestRender_IssueIndexPattern2(t *testing.T) {
|
|||
}
|
||||
expectedNum := fmt.Sprintf(expectedFmt, links...)
|
||||
testRenderIssueIndexPattern(t, s, expectedNum, &RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Metas: numericMetas,
|
||||
ctx: context.Background(),
|
||||
RenderOptions: RenderOptions{Metas: numericMetas},
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -184,8 +184,8 @@ func TestRender_IssueIndexPattern3(t *testing.T) {
|
|||
// alphanumeric: render inputs without valid mentions
|
||||
test := func(s string) {
|
||||
testRenderIssueIndexPattern(t, s, s, &RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Metas: alphanumericMetas,
|
||||
ctx: context.Background(),
|
||||
RenderOptions: RenderOptions{Metas: alphanumericMetas},
|
||||
})
|
||||
}
|
||||
test("")
|
||||
|
@ -217,8 +217,8 @@ func TestRender_IssueIndexPattern4(t *testing.T) {
|
|||
}
|
||||
expected := fmt.Sprintf(expectedFmt, links...)
|
||||
testRenderIssueIndexPattern(t, s, expected, &RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Metas: alphanumericMetas,
|
||||
ctx: context.Background(),
|
||||
RenderOptions: RenderOptions{Metas: alphanumericMetas},
|
||||
})
|
||||
}
|
||||
test("OTT-1234 test", "%s test", "OTT-1234")
|
||||
|
@ -240,8 +240,8 @@ func TestRender_IssueIndexPattern5(t *testing.T) {
|
|||
|
||||
expected := fmt.Sprintf(expectedFmt, links...)
|
||||
testRenderIssueIndexPattern(t, s, expected, &RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Metas: metas,
|
||||
ctx: context.Background(),
|
||||
RenderOptions: RenderOptions{Metas: metas},
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -264,8 +264,8 @@ func TestRender_IssueIndexPattern5(t *testing.T) {
|
|||
)
|
||||
|
||||
testRenderIssueIndexPattern(t, "will not match", "will not match", &RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Metas: regexpMetas,
|
||||
ctx: context.Background(),
|
||||
RenderOptions: RenderOptions{Metas: regexpMetas},
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -279,16 +279,16 @@ func TestRender_IssueIndexPattern_NoShortPattern(t *testing.T) {
|
|||
}
|
||||
|
||||
testRenderIssueIndexPattern(t, "#1", "#1", &RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Metas: metas,
|
||||
ctx: context.Background(),
|
||||
RenderOptions: RenderOptions{Metas: metas},
|
||||
})
|
||||
testRenderIssueIndexPattern(t, "#1312", "#1312", &RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Metas: metas,
|
||||
ctx: context.Background(),
|
||||
RenderOptions: RenderOptions{Metas: metas},
|
||||
})
|
||||
testRenderIssueIndexPattern(t, "!1", "!1", &RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Metas: metas,
|
||||
ctx: context.Background(),
|
||||
RenderOptions: RenderOptions{Metas: metas},
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -301,17 +301,17 @@ func TestRender_RenderIssueTitle(t *testing.T) {
|
|||
"style": IssueNameStyleNumeric,
|
||||
}
|
||||
actual, err := RenderIssueTitle(&RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Metas: metas,
|
||||
ctx: context.Background(),
|
||||
RenderOptions: RenderOptions{Metas: metas},
|
||||
}, "#1")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "#1", actual)
|
||||
}
|
||||
|
||||
func testRenderIssueIndexPattern(t *testing.T, input, expected string, ctx *RenderContext) {
|
||||
ctx.Links.AbsolutePrefix = true
|
||||
if ctx.Links.Base == "" {
|
||||
ctx.Links.Base = TestRepoURL
|
||||
ctx.RenderOptions.Links.AbsolutePrefix = true
|
||||
if ctx.RenderOptions.Links.Base == "" {
|
||||
ctx.RenderOptions.Links.Base = TestRepoURL
|
||||
}
|
||||
|
||||
var buf strings.Builder
|
||||
|
@ -326,22 +326,18 @@ func TestRender_AutoLink(t *testing.T) {
|
|||
test := func(input, expected string) {
|
||||
var buffer strings.Builder
|
||||
err := PostProcess(&RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Links: Links{
|
||||
Base: TestRepoURL,
|
||||
},
|
||||
Metas: localMetas,
|
||||
ctx: context.Background(),
|
||||
|
||||
RenderOptions: RenderOptions{Metas: localMetas, Links: Links{Base: TestRepoURL}},
|
||||
}, strings.NewReader(input), &buffer)
|
||||
assert.Equal(t, err, nil)
|
||||
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer.String()))
|
||||
|
||||
buffer.Reset()
|
||||
err = PostProcess(&RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Links: Links{
|
||||
Base: TestRepoURL,
|
||||
},
|
||||
Metas: localWikiMetas,
|
||||
ctx: context.Background(),
|
||||
|
||||
RenderOptions: RenderOptions{Metas: localWikiMetas, Links: Links{Base: TestRepoURL}},
|
||||
}, strings.NewReader(input), &buffer)
|
||||
assert.Equal(t, err, nil)
|
||||
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer.String()))
|
||||
|
@ -368,11 +364,9 @@ func TestRender_FullIssueURLs(t *testing.T) {
|
|||
test := func(input, expected string) {
|
||||
var result strings.Builder
|
||||
err := postProcess(&RenderContext{
|
||||
Ctx: git.DefaultContext,
|
||||
Links: Links{
|
||||
Base: TestRepoURL,
|
||||
},
|
||||
Metas: localMetas,
|
||||
ctx: context.Background(),
|
||||
|
||||
RenderOptions: RenderOptions{Metas: localMetas, Links: Links{Base: TestRepoURL}},
|
||||
}, []processor{fullIssuePatternProcessor}, strings.NewReader(input), &result)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, expected, result.String())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue