[BUG] Render references to cross-repo issues with external issues

- If you have the external issue setting enabled, any reference would
have been rendered as an external issue, however this shouldn't be
happening to references that refer to issues in other repositories.
- Unit test added.

(cherry picked from commit 05e163aaf3)
This commit is contained in:
Gusted 2024-08-07 03:19:12 +02:00 committed by forgejo-backport-action
parent ee89c482c6
commit cb9c0eb8ca
2 changed files with 17 additions and 1 deletions

View file

@ -880,7 +880,7 @@ func issueIndexPatternProcessor(ctx *RenderContext, node *html.Node) {
var link *html.Node
reftext := node.Data[ref.RefLocation.Start:ref.RefLocation.End]
if hasExtTrackFormat && !ref.IsPull {
if hasExtTrackFormat && !ref.IsPull && ref.Owner == "" {
ctx.Metas["index"] = ref.Issue
res, err := vars.Expand(ctx.Metas["format"], ctx.Metas)

View file

@ -342,6 +342,22 @@ func TestRender_AutoLink(t *testing.T) {
test(tmp, "<a href=\""+tmp+"\" class=\"commit\"><code class=\"nohighlight\">d8a994ef24 (diff-2)</code></a>")
}
func TestRender_IssueIndexPatternRef(t *testing.T) {
setting.AppURL = TestAppURL
test := func(input, expected string) {
var buf strings.Builder
err := postProcess(&RenderContext{
Ctx: git.DefaultContext,
Metas: numericMetas,
}, []processor{issueIndexPatternProcessor}, strings.NewReader(input), &buf)
require.NoError(t, err)
assert.Equal(t, expected, buf.String(), "input=%q", input)
}
test("alan-turin/Enigma-cryptanalysis#1", `<a href="/alan-turin/enigma-cryptanalysis/issues/1" class="ref-issue">alan-turin/Enigma-cryptanalysis#1</a>`)
}
func TestRender_FullIssueURLs(t *testing.T) {
setting.AppURL = TestAppURL