diff --git a/modules/templates/util_render.go b/modules/templates/util_render.go
index c4c5376afd..76790b63d5 100644
--- a/modules/templates/util_render.go
+++ b/modules/templates/util_render.go
@@ -245,7 +245,7 @@ func RenderLabels(ctx context.Context, locale translation.Locale, labels []*issu
if isPull {
issuesOrPull = "pulls"
}
- htmlCode += fmt.Sprintf("%s ",
+ htmlCode += fmt.Sprintf("%s ",
repoLink, issuesOrPull, label.ID, RenderLabel(ctx, locale, label))
}
htmlCode += ""
diff --git a/templates/repo/issue/labels/label.tmpl b/templates/repo/issue/labels/label.tmpl
index 3651ba118f..7844362911 100644
--- a/templates/repo/issue/labels/label.tmpl
+++ b/templates/repo/issue/labels/label.tmpl
@@ -2,6 +2,7 @@
class="item {{if not .label.IsChecked}}tw-hidden{{end}}"
id="label_{{.label.ID}}"
href="{{.root.RepoLink}}/{{if or .root.IsPull .root.Issue.IsPull}}pulls{{else}}issues{{end}}?labels={{.label.ID}}"{{/* FIXME: use .root.Issue.Link or create .root.Link */}}
+ rel="nofollow"
>
{{- RenderLabel $.Context ctx.Locale .label -}}
diff --git a/templates/shared/issuelist.tmpl b/templates/shared/issuelist.tmpl
index 78bfca1c63..f96c1828d2 100644
--- a/templates/shared/issuelist.tmpl
+++ b/templates/shared/issuelist.tmpl
@@ -21,7 +21,7 @@
{{end}}
{{range .Labels}}
- {{RenderLabel $.Context ctx.Locale .}}
+ {{RenderLabel $.Context ctx.Locale .}}
{{end}}
diff --git a/tests/integration/issue_test.go b/tests/integration/issue_test.go
index ecdda68196..8a0505add2 100644
--- a/tests/integration/issue_test.go
+++ b/tests/integration/issue_test.go
@@ -1166,17 +1166,33 @@ func TestCommitRefComment(t *testing.T) {
func TestIssueFilterNoFollow(t *testing.T) {
defer tests.PrepareTestEnv(t)()
- req := NewRequest(t, "GET", "/user2/repo1/issues")
- resp := MakeRequest(t, req, http.StatusOK)
- htmlDoc := NewHTMLParser(t, resp.Body)
-
// Check that every link in the filter list has rel="nofollow".
- filterLinks := htmlDoc.Find(".issue-list-toolbar-right a[href*=\"?q=\"]")
- assert.Positive(t, filterLinks.Length())
- filterLinks.Each(func(i int, link *goquery.Selection) {
- rel, has := link.Attr("rel")
- assert.True(t, has)
- assert.Equal(t, "nofollow", rel)
+ t.Run("Issue lists", func(t *testing.T) {
+ req := NewRequest(t, "GET", "/user2/repo1/issues")
+ resp := MakeRequest(t, req, http.StatusOK)
+ htmlDoc := NewHTMLParser(t, resp.Body)
+
+ filterLinks := htmlDoc.Find(".issue-list-toolbar-right a[href*=\"?q=\"], .labels-list a[href*=\"?q=\"]")
+ assert.Positive(t, filterLinks.Length())
+ filterLinks.Each(func(i int, link *goquery.Selection) {
+ rel, has := link.Attr("rel")
+ assert.True(t, has)
+ assert.Equal(t, "nofollow", rel)
+ })
+ })
+
+ t.Run("Issue page", func(t *testing.T) {
+ req := NewRequest(t, "GET", "/user2/repo1/issues/1")
+ resp := MakeRequest(t, req, http.StatusOK)
+ htmlDoc := NewHTMLParser(t, resp.Body)
+
+ filterLinks := htmlDoc.Find(".timeline .labels-list a[href*=\"?labels=\"], .issue-content-right .labels-list a[href*=\"?labels=\"]")
+ assert.Positive(t, filterLinks.Length())
+ filterLinks.Each(func(i int, link *goquery.Selection) {
+ rel, has := link.Attr("rel")
+ assert.True(t, has)
+ assert.Equal(t, "nofollow", rel)
+ })
})
}