mirror of
https://github.com/go-gitea/gitea
synced 2025-07-04 17:47:19 +00:00
Fix markdown render behaviors (#34122)
* Fix #27645 * Add config options `MATH_CODE_BLOCK_DETECTION`, problematic syntaxes are disabled by default * Fix #33639 * Add config options `RENDER_OPTIONS_*`, old behaviors are kept
This commit is contained in:
@ -8,6 +8,8 @@ import (
|
||||
"testing"
|
||||
|
||||
"code.gitea.io/gitea/modules/markup"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/test"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
@ -15,6 +17,7 @@ import (
|
||||
const nl = "\n"
|
||||
|
||||
func TestMathRender(t *testing.T) {
|
||||
setting.Markdown.MathCodeBlockOptions = setting.MarkdownMathCodeBlockOptions{ParseInlineDollar: true, ParseInlineParentheses: true}
|
||||
testcases := []struct {
|
||||
testcase string
|
||||
expected string
|
||||
@ -69,7 +72,7 @@ func TestMathRender(t *testing.T) {
|
||||
},
|
||||
{
|
||||
"$$a$$",
|
||||
`<code class="language-math display">a</code>` + nl,
|
||||
`<p><code class="language-math">a</code></p>` + nl,
|
||||
},
|
||||
{
|
||||
"$$a$$ test",
|
||||
@ -111,6 +114,7 @@ func TestMathRender(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestMathRenderBlockIndent(t *testing.T) {
|
||||
setting.Markdown.MathCodeBlockOptions = setting.MarkdownMathCodeBlockOptions{ParseBlockDollar: true, ParseBlockSquareBrackets: true}
|
||||
testcases := []struct {
|
||||
name string
|
||||
testcase string
|
||||
@ -243,3 +247,64 @@ x
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestMathRenderOptions(t *testing.T) {
|
||||
setting.Markdown.MathCodeBlockOptions = setting.MarkdownMathCodeBlockOptions{}
|
||||
defer test.MockVariableValue(&setting.Markdown.MathCodeBlockOptions)
|
||||
test := func(t *testing.T, expected, input string) {
|
||||
res, err := RenderString(markup.NewTestRenderContext(), input)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(string(res)), "input: %s", input)
|
||||
}
|
||||
|
||||
// default (non-conflict) inline syntax
|
||||
test(t, `<p><code class="language-math">a</code></p>`, "$`a`$")
|
||||
|
||||
// ParseInlineDollar
|
||||
test(t, `<p>$a$</p>`, `$a$`)
|
||||
setting.Markdown.MathCodeBlockOptions.ParseInlineDollar = true
|
||||
test(t, `<p><code class="language-math">a</code></p>`, `$a$`)
|
||||
|
||||
// ParseInlineParentheses
|
||||
test(t, `<p>(a)</p>`, `\(a\)`)
|
||||
setting.Markdown.MathCodeBlockOptions.ParseInlineParentheses = true
|
||||
test(t, `<p><code class="language-math">a</code></p>`, `\(a\)`)
|
||||
|
||||
// ParseBlockDollar
|
||||
test(t, `<p>$$
|
||||
a
|
||||
$$</p>
|
||||
`, `
|
||||
$$
|
||||
a
|
||||
$$
|
||||
`)
|
||||
setting.Markdown.MathCodeBlockOptions.ParseBlockDollar = true
|
||||
test(t, `<pre class="code-block is-loading"><code class="language-math display">
|
||||
a
|
||||
</code></pre>
|
||||
`, `
|
||||
$$
|
||||
a
|
||||
$$
|
||||
`)
|
||||
|
||||
// ParseBlockSquareBrackets
|
||||
test(t, `<p>[
|
||||
a
|
||||
]</p>
|
||||
`, `
|
||||
\[
|
||||
a
|
||||
\]
|
||||
`)
|
||||
setting.Markdown.MathCodeBlockOptions.ParseBlockSquareBrackets = true
|
||||
test(t, `<pre class="code-block is-loading"><code class="language-math display">
|
||||
a
|
||||
</code></pre>
|
||||
`, `
|
||||
\[
|
||||
a
|
||||
\]
|
||||
`)
|
||||
}
|
||||
|
Reference in New Issue
Block a user