diff --git a/models/repo.go b/models/repo.go index 3c4908b0d..72c9abec1 100644 --- a/models/repo.go +++ b/models/repo.go @@ -775,7 +775,7 @@ func (repo *Repository) NextIssueIndex() int64 { } var ( - descPattern = regexp.MustCompile(`https?://\S+`) + descPattern = regexp.MustCompile(`https?://[a-zA-Z0-9-_@:;%.,+~#?&/=|!$]+`) ) // DescriptionHTML does special handles to description and return HTML string. diff --git a/models/repo_test.go b/models/repo_test.go index 752ffc2dd..cb4175f8f 100644 --- a/models/repo_test.go +++ b/models/repo_test.go @@ -5,6 +5,7 @@ package models import ( + "fmt" "path" "testing" @@ -176,3 +177,14 @@ func TestTransferOwnership(t *testing.T) { CheckConsistencyFor(t, &Repository{}, &User{}, &Team{}) } + +func TestRepoDescriptionHTML(t *testing.T) { + url := "https://github.com/go-gitea/gitea" + description := "GitHub repo: (%s)" + repo := &Repository{Description: fmt.Sprintf(description, url)} + + actual := repo.DescriptionHTML() + expected := fmt.Sprintf(description, + fmt.Sprintf(`%[1]s`, url)) + assert.EqualValues(t, expected, actual) +}