History

Add warning for BIDI characters in page renders and in diffs (#17562)

Fix #17514 Given the comments I've adjusted this somewhat. The numbers of characters detected are increased and include things like the use of U+300 to make à instead of à and non-breaking spaces. There is a button which can be used to escape the content to show it.

zeripath committed 4 years ago

Commit 21ed4fd1 parent ee60f2726 files · +809 −87Browse files

Showing the changes to services/gitdiff/gitdiff_test.go (1 of 26 files). Show all

Unified · Split

services/gitdiff/gitdiff_test.go+10−10
@@ -38,14 +38,14 @@ func TestDiffToHTML(t *testing.T) { · 37 unmodified lines
3838 {Type: dmp.DiffInsert, Text: "bar"},
3939 {Type: dmp.DiffDelete, Text: " baz"},
4040 {Type: dmp.DiffEqual, Text: " biz"},
41− }, DiffLineAdd))
41+ }, DiffLineAdd).Content)
4242
4343 assertEqual(t, "foo <span class=\"removed-code\">bar</span> biz", diffToHTML("", []dmp.Diff{
4444 {Type: dmp.DiffEqual, Text: "foo "},
4545 {Type: dmp.DiffDelete, Text: "bar"},
4646 {Type: dmp.DiffInsert, Text: " baz"},
4747 {Type: dmp.DiffEqual, Text: " biz"},
48− }, DiffLineDel))
48+ }, DiffLineDel).Content)
4949
5050 assertEqual(t, "<span class=\"k\">if</span> <span class=\"p\">!</span><span class=\"nx\">nohl</span> <span class=\"o\">&amp;&amp;</span> <span class=\"added-code\"><span class=\"p\">(</span></span><span class=\"nx\">lexer</span> <span class=\"o\">!=</span> <span class=\"kc\">nil</span><span class=\"added-code\"> <span class=\"o\">||</span> <span class=\"nx\">r</span><span class=\"p\">.</span><span class=\"nx\">GuessLanguage</span><span class=\"p\">)</span></span> <span class=\"p\">{</span>", diffToHTML("", []dmp.Diff{
5151 {Type: dmp.DiffEqual, Text: "<span class=\"k\">if</span> <span class=\"p\">!</span><span class=\"nx\">nohl</span> <span class=\"o\">&amp;&amp;</span> <span class=\""},
@@ -53,7 +53,7 @@ func TestDiffToHTML(t *testing.T) { · 1 unmodified line
5353 {Type: dmp.DiffEqual, Text: "nx\">lexer</span> <span class=\"o\">!=</span> <span class=\"kc\">nil"},
5454 {Type: dmp.DiffInsert, Text: "</span> <span class=\"o\">||</span> <span class=\"nx\">r</span><span class=\"p\">.</span><span class=\"nx\">GuessLanguage</span><span class=\"p\">)"},
5555 {Type: dmp.DiffEqual, Text: "</span> <span class=\"p\">{</span>"},
56− }, DiffLineAdd))
56+ }, DiffLineAdd).Content)
5757
5858 assertEqual(t, "<span class=\"nx\">tagURL</span> <span class=\"o\">:=</span> <span class=\"removed-code\"><span class=\"nx\">fmt</span><span class=\"p\">.</span><span class=\"nf\">Sprintf</span><span class=\"p\">(</span><span class=\"s\">&#34;## [%s](%s/%s/%s/%s?q=&amp;type=all&amp;state=closed&amp;milestone=%d) - %s&#34;</span><span class=\"p\">,</span> <span class=\"nx\">ge</span><span class=\"p\">.</span><span class=\"nx\">Milestone\"</span></span><span class=\"p\">,</span> <span class=\"nx\">ge</span><span class=\"p\">.</span><span class=\"nx\">BaseURL</span><span class=\"p\">,</span> <span class=\"nx\">ge</span><span class=\"p\">.</span><span class=\"nx\">Owner</span><span class=\"p\">,</span> <span class=\"nx\">ge</span><span class=\"p\">.</span><span class=\"nx\">Repo</span><span class=\"p\">,</span> <span class=\"removed-code\"><span class=\"nx\">from</span><span class=\"p\">,</span> <span class=\"nx\">milestoneID</span><span class=\"p\">,</span> <span class=\"nx\">time</span><span class=\"p\">.</span><span class=\"nf\">Now</span><span class=\"p\">(</span><span class=\"p\">)</span><span class=\"p\">.</span><span class=\"nf\">Format</span><span class=\"p\">(</span><span class=\"s\">&#34;2006-01-02&#34;</span><span class=\"p\">)</span></span><span class=\"p\">)</span>", diffToHTML("", []dmp.Diff{
5959 {Type: dmp.DiffEqual, Text: "<span class=\"nx\">tagURL</span> <span class=\"o\">:=</span> <span class=\"n"},
@@ -63,7 +63,7 @@ func TestDiffToHTML(t *testing.T) { · 3 unmodified lines
6363 {Type: dmp.DiffDelete, Text: "from</span><span class=\"p\">,</span> <span class=\"nx\">milestoneID</span><span class=\"p\">,</span> <span class=\"nx\">time</span><span class=\"p\">.</span><span class=\"nf\">Now</span><span class=\"p\">(</span><span class=\"p\">)</span><span class=\"p\">.</span><span class=\"nf\">Format</span><span class=\"p\">(</span><span class=\"s\">&#34;2006-01-02&#34;</span><span class=\"p\">)"},
6464 {Type: dmp.DiffInsert, Text: "ge</span><span class=\"p\">.</span><span class=\"nx\">Milestone</span><span class=\"p\">,</span> <span class=\"nx\">from</span><span class=\"p\">,</span> <span class=\"nx\">milestoneID"},
6565 {Type: dmp.DiffEqual, Text: "</span><span class=\"p\">)</span>"},
66− }, DiffLineDel))
66+ }, DiffLineDel).Content)
6767
6868 assertEqual(t, "<span class=\"nx\">r</span><span class=\"p\">.</span><span class=\"nf\">WrapperRenderer</span><span class=\"p\">(</span><span class=\"nx\">w</span><span class=\"p\">,</span> <span class=\"removed-code\"><span class=\"nx\">language</span><span class=\"p\">,</span> <span class=\"kc\">true</span><span class=\"p\">,</span> <span class=\"nx\">attrs</span></span><span class=\"p\">,</span> <span class=\"kc\">false</span><span class=\"p\">)</span>", diffToHTML("", []dmp.Diff{
6969 {Type: dmp.DiffEqual, Text: "<span class=\"nx\">r</span><span class=\"p\">.</span><span class=\"nf\">WrapperRenderer</span><span class=\"p\">(</span><span class=\"nx\">w</span><span class=\"p\">,</span> <span class=\"nx\">"},
@@ -71,14 +71,14 @@ func TestDiffToHTML(t *testing.T) { · 1 unmodified line
7171 {Type: dmp.DiffEqual, Text: "c"},
7272 {Type: dmp.DiffDelete, Text: "lass=\"p\">,</span> <span class=\"kc\">true</span><span class=\"p\">,</span> <span class=\"nx\">attrs"},
7373 {Type: dmp.DiffEqual, Text: "</span><span class=\"p\">,</span> <span class=\"kc\">false</span><span class=\"p\">)</span>"},
74− }, DiffLineDel))
74+ }, DiffLineDel).Content)
7575
7676 assertEqual(t, "<span class=\"added-code\">language</span><span class=\"p\">,</span> <span class=\"kc\">true</span><span class=\"p\">,</span> <span class=\"nx\">attrs</span></span><span class=\"p\">,</span> <span class=\"kc\">false</span><span class=\"p\">)</span>", diffToHTML("", []dmp.Diff{
7777 {Type: dmp.DiffInsert, Text: "language</span><span "},
7878 {Type: dmp.DiffEqual, Text: "c"},
7979 {Type: dmp.DiffInsert, Text: "lass=\"p\">,</span> <span class=\"kc\">true</span><span class=\"p\">,</span> <span class=\"nx\">attrs"},
8080 {Type: dmp.DiffEqual, Text: "</span><span class=\"p\">,</span> <span class=\"kc\">false</span><span class=\"p\">)</span>"},
81− }, DiffLineAdd))
81+ }, DiffLineAdd).Content)
8282
8383 assertEqual(t, "<span class=\"k\">print</span><span class=\"added-code\"><span class=\"p\">(</span></span><span class=\"sa\"></span><span class=\"s2\">&#34;</span><span class=\"s2\">// </span><span class=\"s2\">&#34;</span><span class=\"p\">,</span> <span class=\"n\">sys</span><span class=\"o\">.</span><span class=\"n\">argv</span><span class=\"added-code\"><span class=\"p\">)</span></span>", diffToHTML("", []dmp.Diff{
8484 {Type: dmp.DiffEqual, Text: "<span class=\"k\">print</span>"},
@@ -87,14 +87,14 @@ func TestDiffToHTML(t *testing.T) { · 2 unmodified lines
8787 {Type: dmp.DiffInsert, Text: "class=\"p\">(</span>"},
8888 {Type: dmp.DiffEqual, Text: "<span class=\"sa\"></span><span class=\"s2\">&#34;</span><span class=\"s2\">// </span><span class=\"s2\">&#34;</span><span class=\"p\">,</span> <span class=\"n\">sys</span><span class=\"o\">.</span><span class=\"n\">argv</span>"},
8989 {Type: dmp.DiffInsert, Text: "<span class=\"p\">)</span>"},
90− }, DiffLineAdd))
90+ }, DiffLineAdd).Content)
9191
9292 assertEqual(t, "sh <span class=\"added-code\">&#39;useradd -u $(stat -c &#34;%u&#34; .gitignore) jenkins&#39;</span>", diffToHTML("", []dmp.Diff{
9393 {Type: dmp.DiffEqual, Text: "sh &#3"},
9494 {Type: dmp.DiffDelete, Text: "4;useradd -u 111 jenkins&#34"},
9595 {Type: dmp.DiffInsert, Text: "9;useradd -u $(stat -c &#34;%u&#34; .gitignore) jenkins&#39"},
9696 {Type: dmp.DiffEqual, Text: ";"},
97− }, DiffLineAdd))
97+ }, DiffLineAdd).Content)
9898
9999 assertEqual(t, "<span class=\"x\"> &lt;h<span class=\"added-code\">4 class=&#34;release-list-title df ac&#34;</span>&gt;</span>", diffToHTML("", []dmp.Diff{
100100 {Type: dmp.DiffEqual, Text: "<span class=\"x\"> &lt;h"},
@@ -102,7 +102,7 @@ func TestDiffToHTML(t *testing.T) { · 1 unmodified line
102102 {Type: dmp.DiffEqual, Text: "3"},
103103 {Type: dmp.DiffInsert, Text: "4;release-list-title df ac&#34;"},
104104 {Type: dmp.DiffEqual, Text: "&gt;</span>"},
105− }, DiffLineAdd))
105+ }, DiffLineAdd).Content)
106106 }
107107
108108 func TestParsePatch_skipTo(t *testing.T) {
@@ -718,7 +718,7 @@ func TestDiffToHTML_14231(t *testing.T) { · 609 unmodified lines
718718 expected := ` <span class="n">run</span><span class="added-code"><span class="o">(</span><span class="n">db</span></span><span class="o">)</span>`
719719 output := diffToHTML("main.v", diffRecord, DiffLineAdd)
720720
721− assertEqual(t, expected, output)
721+ assertEqual(t, expected, output.Content)
722722 }
723723
724724 func TestNoCrashes(t *testing.T) {