]> source.dussan.org Git - gitea.git/commitdiff
Render links for commit hashes followed by comma (#14224) (#14227)
authorNuno Silva <nuno-silva@users.noreply.github.com>
Sun, 3 Jan 2021 16:58:39 +0000 (16:58 +0000)
committerGitHub <noreply@github.com>
Sun, 3 Jan 2021 16:58:39 +0000 (17:58 +0100)
Regex test cases: https://regex101.com/r/mVbPxM/2/

fixes #14223

modules/markup/html.go
modules/markup/html_test.go

index 500261bf8f5f4587397bee17c4a121dc7d467fbd..0c2fff3e01dadba89c50308a0b361347d628f7a1 100644 (file)
@@ -43,7 +43,7 @@ var (
        // sha1CurrentPattern matches string that represents a commit SHA, e.g. d8a994ef243349f321568f9e36d5c3f444b99cae
        // Although SHA1 hashes are 40 chars long, the regex matches the hash from 7 to 40 chars in length
        // so that abbreviated hash links can be used as well. This matches git and github useability.
-       sha1CurrentPattern = regexp.MustCompile(`(?:\s|^|\(|\[)([0-9a-f]{7,40})(?:\s|$|\)|\]|\.(\s|$))`)
+       sha1CurrentPattern = regexp.MustCompile(`(?:\s|^|\(|\[)([0-9a-f]{7,40})(?:\s|$|\)|\]|[.,](\s|$))`)
 
        // shortLinkPattern matches short but difficult to parse [[name|link|arg=test]] syntax
        shortLinkPattern = regexp.MustCompile(`\[\[(.*?)\]\](\w*)`)
index a3c273e628df9f2719d827a184a90285ef8693b1..b04781489a83ed8c06ca4041f472adb216220bf2 100644 (file)
@@ -46,6 +46,12 @@ func TestRender_Commits(t *testing.T) {
        test("/home/gitea/"+sha, "<p>/home/gitea/"+sha+"</p>")
        test("deadbeef", `<p>deadbeef</p>`)
        test("d27ace93", `<p>d27ace93</p>`)
+       test(sha[:14]+".x", `<p>`+sha[:14]+`.x</p>`)
+
+       expected14 := `<a href="` + commit[:len(commit)-(40-14)] + `" rel="nofollow"><code>` + sha[:10] + `</code></a>`
+       test(sha[:14]+".", `<p>`+expected14+`.</p>`)
+       test(sha[:14]+",", `<p>`+expected14+`,</p>`)
+       test("["+sha[:14]+"]", `<p>[`+expected14+`]</p>`)
 }
 
 func TestRender_CrossReferences(t *testing.T) {