mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/SyntaxHighlight_GeSHi
synced 2024-12-19 01:31:43 +00:00
ab5ce23881
RemexHtml does not mangle tabs, so we don't need to armor them! We'll now output literal tab characters, so this does change the HTML output, but does not have any visual change. Depends-On: Idf246d05d116f63a73105b50a1929a7721fbe7b9 Change-Id: I2ba871acf9ff5fdc81c13e03eee3a8fe670e1f0f
186 lines
5.1 KiB
Plaintext
186 lines
5.1 KiB
Plaintext
!! hooks
|
|
source
|
|
!! endhooks
|
|
|
|
!! test
|
|
Non-existent language
|
|
!!input
|
|
<source lang="doesnotexist">
|
|
foobar
|
|
</source>
|
|
!! result
|
|
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre>foobar</pre></div>
|
|
|
|
!! end
|
|
|
|
!! test
|
|
No language specified
|
|
!! wikitext
|
|
<source>
|
|
foo
|
|
</source>
|
|
!! html
|
|
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre>foo</pre></div>
|
|
|
|
!! end
|
|
|
|
!! test
|
|
No language specified (no wellformed xml)
|
|
!! config
|
|
!! wikitext
|
|
<source>
|
|
bar
|
|
</source>
|
|
!! html
|
|
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre>bar</pre></div>
|
|
|
|
!! end
|
|
|
|
!! test
|
|
XSS is escaped
|
|
!!input
|
|
<source lang="doesnotexist">
|
|
<script>alert("pwnd")</script>
|
|
<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`>
|
|
<IMG
|
|
SRC=javascript:alert(
|
|
'XSS')
|
|
\";alert('XSS');//
|
|
</script><script>alert('XSS');</script>
|
|
%253cscript%253ealert(document.cookie)%253c/script%253e
|
|
</source>
|
|
!! result
|
|
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><script>alert("pwnd")</script>
|
|
<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`>
|
|
<IMG
|
|
SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;
|
|
&#39;&#88;&#83;&#83;&#39;&#41;
|
|
\";alert('XSS');//
|
|
</script><script>alert('XSS');</script>
|
|
%253cscript%253ealert(document.cookie)%253c/script%253e</pre></div>
|
|
|
|
!! end
|
|
|
|
!! test
|
|
XSS is escaped (inline)
|
|
!!input
|
|
<source lang="doesnotexist" inline>
|
|
<script>alert("pwnd")</script>
|
|
<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`>
|
|
<IMG
|
|
SRC=javascript:alert(
|
|
'XSS')
|
|
\";alert('XSS');//
|
|
</script><script>alert('XSS');</script>
|
|
%253cscript%253ealert(document.cookie)%253c/script%253e
|
|
</source>
|
|
!! result
|
|
<p><code class="mw-highlight" dir="ltr"><script>alert("pwnd")</script> <IMG SRC=`javascript:alert("RSnake says, 'XSS'")`> <IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40; &#39;&#88;&#83;&#83;&#39;&#41; \";alert('XSS');// </script><script>alert('XSS');</script> %253cscript%253ealert(document.cookie)%253c/script%253e</code>
|
|
</p>
|
|
!! end
|
|
|
|
!! test
|
|
Default behaviour (inner is pre)
|
|
!!input
|
|
<source lang="javascript">
|
|
var a;
|
|
</source>
|
|
!! result
|
|
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">var</span> <span class="nx">a</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
!! end
|
|
|
|
!! test
|
|
Multiline <source/> in lists
|
|
!!input
|
|
* <source>a
|
|
b</source>
|
|
|
|
* foo <source>a
|
|
b</source>
|
|
!! html
|
|
<ul><li><div class="mw-highlight mw-content-ltr" dir="ltr"><pre>a
|
|
b</pre></div></li></ul>
|
|
<ul><li>foo <div class="mw-highlight mw-content-ltr" dir="ltr"><pre>a
|
|
b</pre></div></li></ul>
|
|
|
|
!! html+tidy
|
|
<ul><li><div class="mw-highlight mw-content-ltr" dir="ltr"><pre>a
|
|
b</pre></div></li></ul>
|
|
<ul><li>foo <div class="mw-highlight mw-content-ltr" dir="ltr"><pre>a
|
|
b</pre></div></li></ul>
|
|
!! end
|
|
|
|
!! test
|
|
Custom attributes
|
|
!!input
|
|
<source lang="javascript" id="foo" class="bar" dir="rtl" style="font-size: larger;">var a;</source>
|
|
!! result
|
|
<div id="foo" class="bar mw-highlight mw-content-rtl" dir="rtl" style="font-size: larger;"><pre><span></span><span class="kd">var</span> <span class="nx">a</span><span class="p">;</span>
|
|
</pre></div>
|
|
|
|
!! end
|
|
|
|
!! test
|
|
Inline attribute (inline code)
|
|
!!input
|
|
Text <source lang="javascript" inline>var a;</source>.
|
|
!! result
|
|
<p>Text <code class="mw-highlight" dir="ltr"><span class="kd">var</span> <span class="nx">a</span><span class="p">;</span></code>.
|
|
</p>
|
|
!! end
|
|
|
|
!! test
|
|
Enclose none (inline code)
|
|
!!input
|
|
Text <source lang="javascript" enclose="none">var a;</source>.
|
|
!! result
|
|
<p>Text <code class="mw-highlight" dir="ltr"><span class="kd">var</span> <span class="nx">a</span><span class="p">;</span></code>.
|
|
</p>
|
|
!! end
|
|
|
|
!! test
|
|
Enclose with nowiki
|
|
!! input
|
|
{{#tag:syntaxhighlight|<nowiki>foo</nowiki>|lang="text"|inline=none}}
|
|
!! result
|
|
<p><code class="mw-highlight" dir="ltr">foo</code>
|
|
</p>
|
|
!! end
|
|
|
|
!! test
|
|
No code
|
|
!! input
|
|
<source lang="CSharp"></source>
|
|
!! result
|
|
<div class="mw-highlight mw-content-ltr" dir="ltr"></div>
|
|
|
|
!! end
|
|
|
|
!! test
|
|
Just whitespace
|
|
!! input
|
|
<source lang="CSharp"> </source>
|
|
!! result
|
|
<div class="mw-highlight mw-content-ltr" dir="ltr"></div>
|
|
|
|
!! end
|
|
|
|
!! test
|
|
tabs plus tidy (T32930, T59826)
|
|
!! input
|
|
<syntaxhighlight lang="javascript" enclose="pre" highlight="2-3">
|
|
function doSomething() {
|
|
var foo,
|
|
bar;
|
|
if (baz) {
|
|
</syntaxhighlight>
|
|
!! html+tidy
|
|
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">function</span> <span class="nx">doSomething</span><span class="p">()</span> <span class="p">{</span>
|
|
<span class="hll"> <span class="kd">var</span> <span class="nx">foo</span><span class="p">,</span>
|
|
</span><span class="hll"> <span class="nx">bar</span><span class="p">;</span>
|
|
</span> <span class="k">if</span> <span class="p">(</span><span class="nx">baz</span><span class="p">)</span> <span class="p">{</span>
|
|
</pre></div>
|
|
!! end
|