diff options
Diffstat (limited to 'www/wiki/extensions/Cite/tests')
-rw-r--r-- | www/wiki/extensions/Cite/tests/parser/citeParserTests.txt | 1464 | ||||
-rw-r--r-- | www/wiki/extensions/Cite/tests/phan/config.php | 7 |
2 files changed, 1471 insertions, 0 deletions
diff --git a/www/wiki/extensions/Cite/tests/parser/citeParserTests.txt b/www/wiki/extensions/Cite/tests/parser/citeParserTests.txt new file mode 100644 index 00000000..527b6e77 --- /dev/null +++ b/www/wiki/extensions/Cite/tests/parser/citeParserTests.txt @@ -0,0 +1,1464 @@ +# Force the test runner to ensure the extension is loaded +!! hooks +ref +references +!! endhooks + +!! article +Template:echo +!! text +{{{1}}} +!! endarticle + +!! article +Template:refinref +!! text +<ref>ho</ref> +!! endarticle + +!! test +Simple <ref>, no <references/> +!! wikitext +Wikipedia rocks!<ref>Proceeds of Rockology, vol. XXI</ref> +!! html +Wikipedia rocks!<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup><div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Proceeds of Rockology, vol. XXI</span> +</li> +</ol></div> + +!! end + +!! test +Simple <ref>, with <references/> +!! wikitext +Wikipedia rocks!<ref>Proceeds of Rockology, vol. XXI</ref> + +<references/> +!! html +<p>Wikipedia rocks!<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Proceeds of Rockology, vol. XXI</span> +</li> +</ol></div> + +!! end + + +!! article +Template:Simple template +!! text +A ''simple'' template. +!! endarticle + + +!! test +<ref> with a simple template +!! wikitext +Templating<ref>{{simple template}}</ref> + +<references/> +!! html +<p>Templating<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">A <i>simple</i> template.</span> +</li> +</ol></div> + +!! end + +!! test +<ref> with a <nowiki> +!! wikitext +Templating<ref><nowiki>{{simple template}}</nowiki></ref> + +<references/> +!! html +<p>Templating<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">{{simple template}}</span> +</li> +</ol></div> + +!! end + + +!! test +<ref> in a <nowiki> +!! wikitext +Templating<nowiki><ref>{{simple template}}</ref></nowiki> + +<references/> +!! html +<p>Templating<ref>{{simple template}}</ref> +</p><p><br /> +</p> +!! end + +!! test +<ref> in a <!--comment--> +!! wikitext +Templating<!--<ref>{{simple template}}</ref>--> + +<references/> +!! html +<p>Templating +</p><p><br /> +</p> +!! end + +!! test +<!--comment--> in a <ref> (bug 5384) +!! wikitext +Templating<ref>Text<!--comment--></ref> + +<references/> +!! html +<p>Templating<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Text</span> +</li> +</ol></div> + +!! end + +!! test +<references> after <gallery> (bug 6164) +!! wikitext +<ref>one</ref> + +<gallery>Image:Foobar.jpg</gallery> + +<references/> +!! html +<p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup> +</p> +<ul class="gallery mw-gallery-traditional"> + <li class="gallerybox" style="width: 155px"><div style="width: 155px"> + <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div> + <div class="gallerytext"> + </div> + </div></li> +</ul> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">one</span> +</li> +</ol></div> + +!! end + +!! test +{{REVISIONID}} on page with <ref> (bug 6299) +!! wikitext +{{REVISIONID}}<ref>elite</ref> +!! html +1337<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup><div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">elite</span> +</li> +</ol></div> + +!! end + +!! test +{{REVISIONID}} on page without <ref> (bug 6299 sanity check) +!! wikitext +{{REVISIONID}} +!! html +<p>1337 +</p> +!! end + +!! test +Ref with content followed by blank ref +!! wikitext +<ref name="blank">content</ref> + +<ref name="blank"/> + +<references/> +!! html +<p><sup id="cite_ref-blank_1-0" class="reference"><a href="#cite_note-blank-1">[1]</a></sup> +</p><p><sup id="cite_ref-blank_1-1" class="reference"><a href="#cite_note-blank-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-blank-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-blank_1-0">1.0</a></sup> <sup><a href="#cite_ref-blank_1-1">1.1</a></sup></span> <span class="reference-text">content</span> +</li> +</ol></div> + +!! end + +!! test +Blank ref followed by ref with content +!! wikitext +<ref name="blank"/> + +<ref name="blank">content</ref> + +<references/> +!! html +<p><sup id="cite_ref-blank_1-0" class="reference"><a href="#cite_note-blank-1">[1]</a></sup> +</p><p><sup id="cite_ref-blank_1-1" class="reference"><a href="#cite_note-blank-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-blank-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-blank_1-0">1.0</a></sup> <sup><a href="#cite_ref-blank_1-1">1.1</a></sup></span> <span class="reference-text">content</span> +</li> +</ol></div> + +!! end + +!! test +Regression: non-blank ref "0" followed by ref with content +!! wikitext +<ref name="blank">0</ref> + +<ref name="blank">content</ref> + +<references/> +!! html +<p><sup id="cite_ref-blank_1-0" class="reference"><a href="#cite_note-blank-1">[1]</a></sup> +</p><p><sup id="cite_ref-blank_1-1" class="reference"><a href="#cite_note-blank-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-blank-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-blank_1-0">1.0</a></sup> <sup><a href="#cite_ref-blank_1-1">1.1</a></sup></span> <span class="reference-text">0 <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; name "blank" defined multiple times with different content</span></span> +</li> +</ol></div> + +!! end + +!! test +Regression sanity check: non-blank ref "1" followed by ref with content +!! wikitext +<ref name="blank">1</ref> + +<ref name="blank">content</ref> + +<references/> +!! html +<p><sup id="cite_ref-blank_1-0" class="reference"><a href="#cite_note-blank-1">[1]</a></sup> +</p><p><sup id="cite_ref-blank_1-1" class="reference"><a href="#cite_note-blank-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-blank-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-blank_1-0">1.0</a></sup> <sup><a href="#cite_ref-blank_1-1">1.1</a></sup></span> <span class="reference-text">1 <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; name "blank" defined multiple times with different content</span></span> +</li> +</ol></div> + +!! end + +!! test +Ref names containing a number +!! wikitext +<ref name="test123test">One</ref> +<ref name="123test">Two</ref> +<ref name="test123">Three</ref> + +<references /> +!! html +<p><sup id="cite_ref-test123test_1-0" class="reference"><a href="#cite_note-test123test-1">[1]</a></sup> +<sup id="cite_ref-123test_2-0" class="reference"><a href="#cite_note-123test-2">[2]</a></sup> +<sup id="cite_ref-test123_3-0" class="reference"><a href="#cite_note-test123-3">[3]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-test123test-1"><span class="mw-cite-backlink"><a href="#cite_ref-test123test_1-0">↑</a></span> <span class="reference-text">One</span> +</li> +<li id="cite_note-123test-2"><span class="mw-cite-backlink"><a href="#cite_ref-123test_2-0">↑</a></span> <span class="reference-text">Two</span> +</li> +<li id="cite_note-test123-3"><span class="mw-cite-backlink"><a href="#cite_ref-test123_3-0">↑</a></span> <span class="reference-text">Three</span> +</li> +</ol></div> + +!! end + +!! test +Erroneous refs +!! wikitext +<ref name="0">Zero</ref> + +<ref>Also zero, but differently! (Normal ref)</ref> + +<ref /> + +<ref name="foo" name="bar" /> + +<ref name="blankwithnoreference" /> + +<references name="quasit" /> + +<references /> +!! html +<p><span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; +name cannot be a simple integer. Use a descriptive title</span> +</p><p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup> +</p><p><span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: The opening <code><ref></code> tag is malformed or has a bad name</span> +</p><p><sup id="cite_ref-bar_2-0" class="reference"><a href="#cite_note-bar-2">[2]</a></sup> +</p><p><sup id="cite_ref-blankwithnoreference_3-0" class="reference"><a href="#cite_note-blankwithnoreference-3">[3]</a></sup> +</p><p><span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid parameter in <code><references></code> tag</span> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Also zero, but differently! (Normal ref)</span> +</li> +<li id="cite_note-bar-2"><span class="mw-cite-backlink"><a href="#cite_ref-bar_2-0">↑</a></span> <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; +no text was provided for refs named <code>bar</code></span></li> +<li id="cite_note-blankwithnoreference-3"><span class="mw-cite-backlink"><a href="#cite_ref-blankwithnoreference_3-0">↑</a></span> <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; +no text was provided for refs named <code>blankwithnoreference</code></span></li> +</ol></div> + +!! end + + +!! test +Simple <ref>, with <references/> in group +!! wikitext +Wikipedia rocks!<ref>Proceeds of Rockology, vol. XXI</ref> +Wikipedia rocks!<ref group=note>Proceeds of Rockology, vol. XXI</ref> + +<references/> +<references group=note/> +!! html +<p>Wikipedia rocks!<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup> +Wikipedia rocks!<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">[note 1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Proceeds of Rockology, vol. XXI</span> +</li> +</ol></div> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">Proceeds of Rockology, vol. XXI</span> +</li> +</ol></div> + +!! end + +!! test +Simple <ref>, with <references/> in group, with groupname in Chinese +!! wikitext +AAA<ref group="参">ref a</ref>BBB<ref group="注">note b</ref>CCC<ref group="参">ref c</ref> + +;refs +<references group="参" /> +;notes +<references group="注" /> +!! html +<p>AAA<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[参 1]</a></sup>BBB<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">[注 1]</a></sup>CCC<sup id="cite_ref-3" class="reference"><a href="#cite_note-3">[参 2]</a></sup> +</p> +<dl><dt>refs</dt></dl> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">ref a</span> +</li> +<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text">ref c</span> +</li> +</ol></div> +<dl><dt>notes</dt></dl> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">note b</span> +</li> +</ol></div> + +!! end + +!! test +<ref> defined in <references> +!! wikitext +<ref name="foo"/> + +<references> +<ref name="foo">BAR</ref> +</references> +!! html +<p><sup id="cite_ref-foo_1-0" class="reference"><a href="#cite_note-foo-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-foo-1"><span class="mw-cite-backlink"><a href="#cite_ref-foo_1-0">↑</a></span> <span class="reference-text">BAR</span> +</li> +</ol></div> + +!! end + +!! test +<ref> defined in <references> called with #tag +!! wikitext +<ref name="foo"/> + +{{#tag:references| +<ref name="foo">BAR</ref> +}} +!! html +<p><sup id="cite_ref-foo_1-0" class="reference"><a href="#cite_note-foo-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-foo-1"><span class="mw-cite-backlink"><a href="#cite_ref-foo_1-0">↑</a></span> <span class="reference-text">BAR</span> +</li> +</ol></div> + +!! end + +!! test +<ref> defined in <references> error conditions +!! wikitext +<ref name="foo" group="2"/> + +<references group="2"> +<ref name="foo"/> +<ref name="unused">BAR</ref> +<ref name="foo" group="1">bad group</ref> +<ref>BAR BAR</ref> +</references> +!! html +<p><sup id="cite_ref-foo_1-0" class="reference"><a href="#cite_note-foo-1">[2 1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-foo-1"><span class="mw-cite-backlink"><a href="#cite_ref-foo_1-0">↑</a></span> <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; +no text was provided for refs named <code>foo</code></span></li> +</ol></div> +<p><span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: <code><ref></code> tag with name "unused" defined in <code><references></code> is not used in prior text.</span><br /> +<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: <code><ref></code> tag in <code><references></code> has conflicting group attribute "1".</span><br /> +<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: <code><ref></code> tag defined in <code><references></code> has no name attribute.</span> +</p> +!! end + +!! article +MediaWiki:cite_link_label_group-klingon +!! text +wa' cha' wej loS vagh jav Soch chorgh Hut wa'maH +!! endarticle + +!! test +<ref> with custom group link with number names in Klingon +!! wikitext +Wikipedia rocks!<ref group="klingon">Proceeds of Rockology, vol. XXI</ref> + +<references group="klingon"/> +!! html +<p>Wikipedia rocks!<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[wa']</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Proceeds of Rockology, vol. XXI</span> +</li> +</ol></div> + +!! end + +!! test +Bug 31374 regression check: nested strip items +!! wikitext +{{#tag:ref|note<ref>reference</ref>|group=Note}} +<references group=Note /> +<references /> +!! html +<p><sup id="cite_ref-2" class="reference"><a href="#cite_note-2">[Note 1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">note<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup></span> +</li> +</ol></div> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">reference</span> +</li> +</ol></div> + +!! end + +!! test +Bug 13073 regression check: wrapped <references> +!! options +parsoid={"suppressErrors": true} +!! wikitext +<ref> +foo +</ref> +<div><references /></div> +!! html/* +<p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup> +</p> +<div><div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"> +foo</span> +</li> +</ol></div></div> + +!! end + +!! test +<ref> with no name and no content. +!! wikitext +Bla.<ref></ref> +!! html +<p>Bla.<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; +refs with no name must have content</span> +</p> +!! end + +!! test +<ref> with an empty-string name parameter and no content. +!! wikitext +Bla.<ref name=""></ref> +!! html +<p>Bla.<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; +refs with no name must have content</span> +</p> +!! end + +!! test +<ref> with a non-empty name parameter and no content. +!! wikitext +Bla.<ref name="void"></ref> +!! html +Bla.<sup id="cite_ref-void_1-0" class="reference"><a href="#cite_note-void-1">[1]</a></sup><div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-void-1"><span class="mw-cite-backlink"><a href="#cite_ref-void_1-0">↑</a></span> <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; +no text was provided for refs named <code>void</code></span></li> +</ol></div> + +!! end + +!! test +<ref>s with the follow parameter +!! wikitext +Page one.<ref name="beginning">First page footnote text.</ref> + +Page two.<ref follow="beginning">Second page footnote text.</ref> + +== References == +<references /> +!! html +<p>Page one.<sup id="cite_ref-beginning_1-0" class="reference"><a href="#cite_note-beginning-1">[1]</a></sup> +</p><p>Page two. +</p> +<h2><span class="mw-headline" id="References">References</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: References">edit</a><span class="mw-editsection-bracket">]</span></span></h2> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-beginning-1"><span class="mw-cite-backlink"><a href="#cite_ref-beginning_1-0">↑</a></span> <span class="reference-text">First page footnote text. Second page footnote text.</span> +</li> +</ol></div> + +!! end + +!! test +<ref> with both name and follow parameters - invalid +!! wikitext +Page one.<ref name="the-name" follow="the-name">This ref is invalid.</ref> +<references /> +!! html +<p>Page one.<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; +invalid names, e.g. too many</span> +</p> +!! end + +!! test +Multiple definition (outside <references/>) +!! wikitext +<ref name=a>abc</ref> +<ref name=a>def</ref> +<references /> +!! html +<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">[1]</a></sup> +<sup id="cite_ref-a_1-1" class="reference"><a href="#cite_note-a-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-a-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-a_1-0">1.0</a></sup> <sup><a href="#cite_ref-a_1-1">1.1</a></sup></span> <span class="reference-text">abc <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; name "a" defined multiple times with different content</span></span> +</li> +</ol></div> + +!! end + +!! test +Multiple definition (inside <references/>) +!! wikitext +<ref name=a /> +<references> +<ref name=a>abc</ref> +<ref name=a>def</ref> +</references> +!! html +<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-a-1"><span class="mw-cite-backlink"><a href="#cite_ref-a_1-0">↑</a></span> <span class="reference-text">abc <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; name "a" defined multiple times with different content</span></span> +</li> +</ol></div> + +!! end + +!! test +Multiple definition (mixed outside/inside) +!! wikitext +<ref name=a>abc</ref> +<references> +<ref name=a>def</ref> +</references> +!! html +<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-a-1"><span class="mw-cite-backlink"><a href="#cite_ref-a_1-0">↑</a></span> <span class="reference-text">abc <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; name "a" defined multiple times with different content</span></span> +</li> +</ol></div> + +!! end + +!! test +Multiple definition (inside {{#tag:references}}) +!! wikitext +<ref name=a /> +{{#tag:references| +<ref name=a>abc</ref> +<ref name=a>def</ref> +}} +!! html +<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-a-1"><span class="mw-cite-backlink"><a href="#cite_ref-a_1-0">↑</a></span> <span class="reference-text">abc <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code><ref></code> tag; name "a" defined multiple times with different content</span></span> +</li> +</ol></div> + +!! end + +# Parsoid doesn't rt cleanly because name attribute is actually broken +# here (<ref> tag closes at first >); see next test for a tidied version. +!! test +T29694 - [] in reference names in HTML5 fragment mode +!! config +wgFragmentMode=[ 'html5' ] +!! options +parsoid=wt2html +!! wikitext +<ref name="[#foo] {bar} <baz>">[bar]</ref> +!! html/php +<sup id="cite_ref-[#foo]_{bar}_<baz_1-0" class="reference"><a href="#cite_note-[#foo]_{bar}_<baz-1">[1]</a></sup><div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-[#foo]_{bar}_<baz-1"><span class="mw-cite-backlink"><a href="#cite_ref-[#foo]_{bar}_<baz_1-0">↑</a></span> <span class="reference-text">">[bar]</span> +</li> +</ol></div> + +!! html/parsoid +<p><sup about="#mwt2" class="mw-ref" id="cite_ref-[#foo]_{bar}_<baz_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-[#foo]_{bar}_<baz-1"},"attrs":{"name":"[#foo] {bar} <baz"}}'><a href="./Main_Page#cite_note-[#foo]_{bar}_<baz-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{},"autoGenerated":true}'><li about="#cite_note-[#foo]_{bar}_<baz-1" id="cite_note-[#foo]_{bar}_<baz-1"><a href="./Main_Page#cite_ref-[#foo]_{bar}_<baz_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-[#foo]_{bar}_<baz-1" class="mw-reference-text" data-parsoid="{}">">[bar]</span></li></ol> +!! end + +!! test +T29694 - [] in reference names in HTML5 fragment mode (tidied) +!! config +wgFragmentMode=[ 'html5' ] +!! wikitext +<ref name="[#foo] {bar} <baz>">[bar]</ref> +<references /> +!! html/php +<p><sup id="cite_ref-[#foo]_{bar}_<baz>_1-0" class="reference"><a href="#cite_note-[#foo]_{bar}_<baz>-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-[#foo]_{bar}_<baz>-1"><span class="mw-cite-backlink"><a href="#cite_ref-[#foo]_{bar}_<baz>_1-0">↑</a></span> <span class="reference-text">[bar]</span> +</li> +</ol></div> + +!! html/parsoid +<p><sup about="#mwt2" class="mw-ref" id="cite_ref-[#foo]_{bar}_<baz>_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-[#foo]_{bar}_<baz>-1"},"attrs":{"name":"[#foo] {bar} <baz>"}}'><a href="./Main_Page#cite_note-[#foo]_{bar}_<baz>-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-[#foo]_{bar}_<baz>-1" id="cite_note-[#foo]_{bar}_<baz>-1"><a href="./Main_Page#cite_ref-[#foo]_{bar}_<baz>_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-[#foo]_{bar}_<baz>-1" class="mw-reference-text" data-parsoid="{}">[bar]</span></li></ol> +!! end + + +#### ---------------------------------------------------------------- +#### Parsoid-only testing of Parsoid's impl of <ref> and <references> +#### tags. Parsoid's output for these tags differs from that of the +#### PHP parser. +#### ---------------------------------------------------------------- + +!! test +Ref: 1. ref-location should be replaced with an index span +!! wikitext +A <ref>foo</ref> +B <ref name="x">foo</ref> +C <ref name="y" /> +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup> +B <sup about="#mwt4" class="mw-ref" id="cite_ref-x_2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-x-2"},"attrs":{"name":"x"}}'><a href="./Main_Page#cite_note-x-2"><span class="mw-reflink-text">[2]</span></a></sup> +C <sup about="#mwt6" class="mw-ref" id="cite_ref-y_3-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"y"}}'><a href="./Main_Page#cite_note-y-3"><span class="mw-reflink-text">[3]</span></a></sup></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt8" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li> +<li about="#cite_note-x-2" id="cite_note-x-2"><a href="./Main_Page#cite_ref-x_2-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-x-2" class="mw-reference-text">foo</span></li> +<li about="#cite_note-y-3" id="cite_note-y-3"><a href="./Main_Page#cite_ref-y_3-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-y-3" class="mw-reference-text"></span></li> +</ol> +!! end + +!! test +Ref: 2. ref-tags with identical names should all get the same index +!! wikitext +A <ref name="x">foo</ref> +B <ref name="x" /> +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-x_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-x-1"},"attrs":{"name":"x"}}'><a href="./Main_Page#cite_note-x-1"><span class="mw-reflink-text">[1]</span></a></sup> +B <sup about="#mwt4" class="mw-ref" id="cite_ref-x_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"x"}}'><a href="./Main_Page#cite_note-x-1"><span class="mw-reflink-text">[1]</span></a></sup></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-x-1" id="cite_note-x-1"><span rel="mw:referencedBy"><a href="./Main_Page#cite_ref-x_1-0"><span class="mw-linkback-text">1 </span></a><a href="./Main_Page#cite_ref-x_1-1"><span class="mw-linkback-text">2 </span></a></span> <span id="mw-reference-text-cite_note-x-1" class="mw-reference-text">foo</span></li> +</ol> +!! end + +!! test +Ref: 3. spaces in ref-names should be ignored +!! wikitext +A <ref name="x">foo</ref> +B <ref name=" x " /> +C <ref name= x /> +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-x_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-x-1"},"attrs":{"name":"x"}}'><a href="./Main_Page#cite_note-x-1"><span class="mw-reflink-text">[1]</span></a></sup> +B <sup about="#mwt4" class="mw-ref" id="cite_ref-x_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"x"}}'><a href="./Main_Page#cite_note-x-1"><span class="mw-reflink-text">[1]</span></a></sup> +C <sup about="#mwt6" class="mw-ref" id="cite_ref-x_1-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"x"}}'><a href="./Main_Page#cite_note-x-1"><span class="mw-reflink-text">[1]</span></a></supn></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt8" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-x-1" id="cite_note-x-1"><span rel="mw:referencedBy"><a href="./Main_Page#cite_ref-x_1-0"><span class="mw-linkback-text">1 </span></a><a href="./Main_Page#cite_ref-x_1-1"><span class="mw-linkback-text">2 </span></a><a href="./Main_Page#cite_ref-x_1-2"><span class="mw-linkback-text">3 </span></a></span> <span id="mw-reference-text-cite_note-x-1" class="mw-reference-text">foo</span></li> +</ol> +!! end + +# NOTE: constructor is a predefined property in JS and constructor as a ref-name can clash with it if not handled properly) +!! test +Ref: 4. 'constructor' should be accepted as a valid ref-name +!! wikitext +A <ref name="constructor">foo</ref> +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-constructor_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-constructor-1"},"attrs":{"name":"constructor"}}'><a href="./Main_Page#cite_note-constructor-1"><span class="mw-reflink-text">[1]</span></a></sup></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-constructor-1" id="cite_note-constructor-1"><a href="./Main_Page#cite_ref-constructor_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-constructor-1" class="mw-reference-text">foo</span></li> +</ol> +!! end + +!! test +Ref: 5. body should accept generic wikitext +!! wikitext +A <ref> + This is a '''[[bolded link]]''' and this is a {{echo|transclusion}} +</ref> + +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup></p> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">This is a <b><a rel="mw:WikiLink" href="./Bolded_link" title="Bolded link">bolded link</a></b> and this is a <span about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"transclusion"}},"i":0}}]}'>transclusion</span> +</span></li> +</ol> +!! end + +!! test +Ref: 6. indent-pres should not be output in ref-body +!! wikitext +A <ref> + foo + bar + baz +</ref> + +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup></p> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo + bar + baz +</span></li> +</ol> +!! end + +!! test +Ref: 7. No p-wrapping in ref-body +!! wikitext +A <ref> +foo + +bar + + +baz + + + +booz +</ref> + +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup></p> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo + +bar + + +baz + + + +booz +</span></li> +</ol> +!! end + +!! test +Ref: 8. transclusion wikitext has lower precedence +!! wikitext +A <ref> foo {{echo|</ref> B C}} + +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup> B C}}</p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo {{echo|</span></li> +</ol> +!! end + +!! test +Ref: 9. unclosed comments should not leak out of ref-body +!! wikitext +A <ref> foo <!--</ref> B C +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup> B C</p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo <!----></span></li> +</ol> +!! end + +!! test +Ref: 10. Unclosed HTML tags should not leak out of ref-body +!! wikitext +A <ref> <b> foo </ref> B C + +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup> B C</p> + + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text"><b data-parsoid='{"stx":"html","autoInsertedEnd":true}'> foo </b></span></li> +</ol> +!! end + +!! test +Ref: 11. ref-tags acts like an inline element wrt P-wrapping +!! wikitext +A <ref>foo</ref> B +C <ref>bar</ref> D +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup> B +C <sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="./Main_Page#cite_note-2"><span class="mw-reflink-text">[2]</span></a></sup> D</p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li> +<li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">bar</span></li> +</ol> +!! end + +!! test +Ref: 12. ref-tags act as trailing newline migration barrier +!! wikitext +<!--the newline at the end of this line moves out of the p tag-->a + +b<!--the newline at the end of this line stays inside the p tag--> <ref /> +<ref /> + +c +<references /> +!! html/parsoid +<!--the newline at the end of this line moves out of the p tag--><p>a</p> + + +<p>b<!--the newline at the end of this line stays inside the p tag--> <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup> +<sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{}}'><a href="./Main_Page#cite_note-2"><span class="mw-reflink-text">[2]</span></a></sup></p> + +<p>c</p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text"></span></li> +<li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text"></span></li></ol> +!! end + +!! test +Ref: 13. ref-tags are not SOL-transparent and block indent-pres +!! wikitext +<ref>foo</ref> A +<ref>bar +</ref> B +<references /> +!! html/parsoid +<p><sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup> A +<sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="./Main_Page#cite_note-2"><span class="mw-reflink-text">[2]</span></a></sup> B</p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li> +<li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">bar +</span></li> +</ol> +!! end + +## Roundtripping fails because of nowiki'ing +!! test +Ref: 14. A nested ref-tag should be emitted as plain text +!! options +parsoid=wt2html +!! wikitext +<ref>foo <ref>bar</ref> baz</ref> + +<references /> +!! html/parsoid +<p><sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup> baz</ref></p> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">foo <ref>bar</span></li></ol> +!! end + +!! test +Ref: 15. ref-tags with identical names should get identical indexes +!! wikitext +A1 <ref name="a">foo</ref> A2 <ref name="a" /> +B1 <ref name="b" /> B2 <ref name="b">bar</ref> + +<references /> +!! html/parsoid +<p>A1 <sup about="#mwt3" class="mw-ref" id="cite_ref-a_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-a-1"},"attrs":{"name":"a"}}'><a href="./Main_Page#cite_note-a-1"><span class="mw-reflink-text">[1]</span></a></sup> A2 <sup about="#mwt4" class="mw-ref" id="cite_ref-a_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"a"}}'><a href="./Main_Page#cite_note-a-1"><span class="mw-reflink-text">[1]</span></a></sup> +B1 <sup about="#mwt7" class="mw-ref" id="cite_ref-b_2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"b"}}'><a href="./Main_Page#cite_note-b-2"><span class="mw-reflink-text">[2]</span></a></sup> B2 <sup about="#mwt8" class="mw-ref" id="cite_ref-b_2-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-b-2"},"attrs":{"name":"b"}}'><a href="./Main_Page#cite_note-b-2"><span class="mw-reflink-text">[2]</span></a></sup></p> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt10" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-a-1" id="cite_note-a-1"><span rel="mw:referencedBy"><a href="./Main_Page#cite_ref-a_1-0"><span class="mw-linkback-text">1 </span></a><a href="./Main_Page#cite_ref-a_1-1"><span class="mw-linkback-text">2 </span></a></span> <span id="mw-reference-text-cite_note-a-1" class="mw-reference-text">foo</span></li><li about="#cite_note-b-2" id="cite_note-b-2"><span rel="mw:referencedBy"><a href="./Main_Page#cite_ref-b_2-0"><span class="mw-linkback-text">1 </span></a><a href="./Main_Page#cite_ref-b_2-1"><span class="mw-linkback-text">2 </span></a></span> <span id="mw-reference-text-cite_note-b-2" class="mw-reference-text">bar</span></li> +</ol> +!! end + +## We don't bother wt2wt-ing non-standard whitespace +!! test +Ref: 16. Tokenizer should accept non-standard whitespace in <ref> and </ref> tags +!!options +parsoid=wt2html +!! wikitext +A <ref >foo</ref > + +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li></ol> +!! end + +!! test +Ref: 17. Generate valid HTML5 id/about attributes +!! wikitext +<ref name="a b">foo</ref> +<ref name=":0">ve-created name</ref> + +<references /> +!! html/parsoid +<p><sup about="#mwt2" class="mw-ref" id="cite_ref-a_b_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-a_b-1"},"attrs":{"name":"a b"}}'><a href="./Main_Page#cite_note-a_b-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup> +<sup about="#mwt4" class="mw-ref" id="cite_ref-:0_2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-:0-2"},"attrs":{"name":":0"}}'><a href="./Main_Page#cite_note-:0-2" style="counter-reset: mw-Ref 2;"><span class="mw-reflink-text">[2]</span></a></sup> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-a_b-1" id="cite_note-a_b-1"><a href="./Main_Page#cite_ref-a_b_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-a_b-1" class="mw-reference-text">foo</span></li><li about="#cite_note-:0-2" id="cite_note-:0-2"><a href="./Main_Page#cite_ref-:0_2-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-:0-2" class="mw-reference-text">ve-created name</span></li></ol> + +!! end + +!! test +Ref: 18. T58916: Extension attributes should be parsed as plain text +!! config +wgFragmentMode=[ 'html5', 'legacy' ] +!! wikitext +<ref name="{{echo|a}}">foo</ref> + +<references /> +!! html/php +<p><sup id="cite_ref-{{echo|a}}_1-0" class="reference"><a href="#cite_note-{{echo|a}}-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-{{echo|a}}-1"><span class="mw-cite-backlink"><a href="#cite_ref-{{echo|a}}_1-0">↑</a></span> <span class="reference-text">foo</span> +</li> +</ol></div> + +!! html/parsoid +<p><sup class="mw-ref" id="cite_ref-{{echo|a}}_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-{{echo|a}}-1"},"attrs":{"name":"{{echo|a}}"}}'><a href="./Main_Page#cite_note-{{echo|a}}-1"><span class="mw-reflink-text">[1]</span></a></sup> +</p> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_ref-{{echo|a}}_1-1" id="cite_note-{{echo|a}}-1"><a href="./Main_Page#cite_ref-{{echo|a}}_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-{{echo|a}}-1" class="mw-reference-text">foo</span></li> +</ol> +!! end + +# Parsoid doesn't wt2wt this cleanly because we serialize both +# versions of the name the same way ("a & b") +!! test +Ref: 19. ref-tags with identical name encodings should get identical indexes +!! config +wgFragmentMode=[ 'html5', 'legacy' ] +!! options +parsoid=wt2html,html2html +!! wikitext +1 <ref name="a & b">foo</ref> 2 <ref name="a & b" /> + +<references /> +!! html/php +<p>1 <sup id="cite_ref-a_&_b_1-0" class="reference"><a href="#cite_note-a_&_b-1">[1]</a></sup> 2 <sup id="cite_ref-a_&_b_1-1" class="reference"><a href="#cite_note-a_&_b-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-a_&_b-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-a_&_b_1-0">1.0</a></sup> <sup><a href="#cite_ref-a_&_b_1-1">1.1</a></sup></span> <span class="reference-text">foo</span> +</li> +</ol></div> + +!! html/parsoid +<p>1 <sup about="#mwt3" class="mw-ref" id="cite_ref-a_&_b_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-a_&_b-1"},"attrs":{"name":"a & b"}}'><a href="./Main_Page#cite_note-a_&_b-1"><span class="mw-reflink-text">[1]</span></a></sup> 2 <sup about="#mwt4" class="mw-ref" id="cite_ref-a_&_b_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"a & b"}}'><a href="./Main_Page#cite_note-a_&_b-1"><span class="mw-reflink-text">[1]</span></a></sup> +</p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'> +<li about="cite_note-a_&_b-1" id="cite_note-a_&_b-1"><span rel="mw:referencedBy"><a href="./Main_Page#cite_ref-a_&_b_1-0"><span class="mw-linkback-text">1 </span></a><a href="./Main_Page#cite_ref-a_&_b_1-1"><span class="mw-linkback-text">2 </span></a></span> <span id="mw-reference-text-cite_note-a_&_b-1" class="mw-reference-text">foo</span></li> +</ol> +!! end + +!! test +Ref: 20. ref-tags with identical names but different content should keep it +!! wikitext +A <ref name="foo">Foo one</ref> +B <ref name="foo">Foo two</ref> +C <ref name="foo" /> + +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-foo_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-foo-1"},"attrs":{"name":"foo"}}'><a href="./Main_Page#cite_note-foo-1"><span class="mw-reflink-text">[1]</span></a></sup> +B <sup about="#mwt4" class="mw-ref" id="cite_ref-foo_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"Foo two"},"attrs":{"name":"foo"}}'><a href="./Main_Page#cite_note-foo-1"><span class="mw-reflink-text">[1]</span></a></sup> +C <sup about="#mwt6" class="mw-ref" id="cite_ref-foo_1-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"foo"}}'><a href="./Main_Page#cite_note-foo-1"><span class="mw-reflink-text">[1]</span></a></sup></p> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt8" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-foo-1" id="cite_note-foo-1"><span rel="mw:referencedBy"><a href="./Main_Page#cite_ref-foo_1-0"><span class="mw-linkback-text">1 </span></a><a href="./Main_Page#cite_ref-foo_1-1"><span class="mw-linkback-text">2 </span></a><a href="./Main_Page#cite_ref-foo_1-2"><span class="mw-linkback-text">3 </span></a></span> <span id="mw-reference-text-cite_note-foo-1" class="mw-reference-text">Foo one</span></li> +</ol> +!! end + +!! test +References: 1. references tag without any refs should be handled properly +!! wikitext +<references /> +!! html/parsoid +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt2" data-mw='{"name":"references","attrs":{}}'></ol> +!! end + +!! test +References: 2. references tag with group only outputs references from that group +!! wikitext +A <ref group="a">foo</ref> +B <ref group="b">bar</ref> +C <ref>baz</ref> + +<references group="a" /> +<references /> +<references group="b" /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{"group":"a"}}'><a href="./Main_Page#cite_note-1" data-mw-group="a"><span class="mw-reflink-text">[a 1]</span></a></sup> +B <sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{"group":"b"}}'><a href="./Main_Page#cite_note-2" data-mw-group="b"><span class="mw-reflink-text">[b 1]</span></a></sup> +C <sup class="mw-ref" id="cite_ref-3" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-3"},"attrs":{}}'><a href="./Main_Page#cite_note-3"><span class="mw-reflink-text">[1]</span></a></sup></p> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt8" data-mw-group="a" data-mw='{"name":"references","attrs":{"group":"a"}}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" data-mw-group="a" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li> +</ol> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt10" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-3" id="cite_note-3"><a href="./Main_Page#cite_ref-3" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-3" class="mw-reference-text">baz</span></li> +</ol> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt12" data-mw-group="b" data-mw='{"name":"references","attrs":{"group":"b"}}'> +<li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" data-mw-group="b" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">bar</span></li> +</ol> +!! end + +!! test +References: 3. ref list should be cleared after processing references +!! wikitext +A <ref>foo</ref> + +<references /> + +B <ref>bar</ref> + +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup></p> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li> +</ol> + +<p>B <sup about="#mwt6" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="./Main_Page#cite_note-2"><span class="mw-reflink-text">[1]</span></a></sup></p> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt8" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">bar</span></li> +</ol> +!! end + +!! test +References: 4. only referenced group should be cleared after processing references +!! wikitext +A <ref group="a">afoo</ref> +B <ref>bfoo</ref> + +<references group="a" /> + +C <ref>cfoo</ref> + +<references /> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{"group":"a"}}'><a href="./Main_Page#cite_note-1" data-mw-group="a"><span class="mw-reflink-text">[a 1]</span></a></sup> +B <sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="./Main_Page#cite_note-2"><span class="mw-reflink-text">[1]</span></a></sup></p> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw-group="a" data-mw='{"name":"references","attrs":{"group":"a"}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" data-mw-group="a" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">afoo</span></li> +</ol> + +<p>C <sup about="#mwt8" class="mw-ref" id="cite_ref-3" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-3"},"attrs":{}}'><a href="./Main_Page#cite_note-3"><span class="mw-reflink-text">[2]</span></a></sup></p> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt10" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">bfoo</span></li><li about="#cite_note-3" id="cite_note-3"><a href="./Main_Page#cite_ref-3" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-3" class="mw-reference-text">cfoo</span></li> +</ol> +!! end + +## Don't expect this to rt since we're dropping content +!! test +References: 5. ref tags in references should be processed while ignoring all other content +!! options +parsoid=wt2html,html2html +!! wikitext +A <ref name="a" /> +B <ref name="b">bar</ref> + +<references> +<ref name="a">foo</ref> +This should just get lost. +</references> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-a_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"a"}}'><a href="./Main_Page#cite_note-a-1"><span class="mw-reflink-text">[1]</span></a></sup> +B <sup about="#mwt4" class="mw-ref" id="cite_ref-b_2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-b-2"},"attrs":{"name":"b"}}'><a href="./Main_Page#cite_note-b-2"><span class="mw-reflink-text">[2]</span></a></sup></p> + + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{},"body":{"html":"\n<sup about=\"#mwt8\" class=\"mw-ref\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"dsr\":[59,82,14,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"id\":\"mw-reference-text-cite_note-a-1\"},\"attrs\":{\"name\":\"a\"}}'><a href=\"./Main_Page#cite_note-a-1\" style=\"counter-reset: mw-Ref 1;\" data-parsoid=\"{}\"><span class=\"mw-reflink-text\" data-parsoid=\"{}\">[1]</span></a></sup>\n"}}'><li about="#cite_note-a-1" id="cite_note-a-1"><a href="./Main_Page#cite_ref-a_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-a-1" class="mw-reference-text">foo</span></li><li about="#cite_note-b-2" id="cite_note-b-2"><a href="./Main_Page#cite_ref-b_2-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-b-2" class="mw-reference-text">bar</span></li> +</ol> +!! end + +!! test +References: 6. <references /> from a transclusion +!! wikitext +<ref>Foo</ref> {{echo|<references />}} +!! html/parsoid +<p><sup about="#mwt3" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup></p> <ol class="mw-references references" typeof="mw:Extension/references mw:Transclusion" about="#mwt4" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<references />"}},"i":0}}]}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">Foo</span></li> +</ol> +!! end + +!! test +References: 7. Multiple references tags (one without and one with nested refs) should be correctly handled +!! wikitext +A <ref>foo bar for a</ref> +B <ref group="X" name="b" /> + +<references /> + +<references group="X"> +<ref name="b">foo</ref> +</references> +!! html/parsoid +<p>A <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup> +B <sup about="#mwt4" class="mw-ref" id="cite_ref-b_2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"group":"X","name":"b"}}'><a href="./Main_Page#cite_note-b-2" data-mw-group="X"><span class="mw-reflink-text">[X 1]</span></a></sup> +</p> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo bar for a</span></li> +</ol> + +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt8" data-mw-group="X" data-mw='{"name":"references","attrs":{"group":"X"},"body":{"html":"\n<sup about=\"#mwt10\" class=\"mw-ref\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"dsr\":[96,119,14,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"id\":\"mw-reference-text-cite_note-b-2\"},\"attrs\":{\"name\":\"b\"}}'><a href=\"./Main_Page#cite_note-b-2\" style=\"counter-reset: mw-Ref 1;\" data-mw-group=\"X\" data-parsoid=\"{}\"><span class=\"mw-reflink-text\" data-parsoid=\"{}\">[X 1]</span></a></sup>\n"}}'> +<li about="#cite_note-b-2" id="cite_note-b-2"><a href="./Main_Page#cite_ref-b_2-0" data-mw-group="X" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-b-2" class="mw-reference-text">foo</span></li> +</ol> +!! end + +!! test +References: 8. T88019: Remove <meta>s from templates inside <ref> that's itself inside a template +!! wikitext +X{{echo|<ref>foo {{echo|<b>bar</b>}} and {{echo|baz}} boo</ref>}} +<references /> +!! html/parsoid +<p>X<sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Transclusion mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<ref>foo {{echo|<b>bar</b>}} and {{echo|baz}} boo</ref>"}},"i":0}}]}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt7" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo <b data-parsoid='{"stx":"html"}'>bar</b> and baz boo</span></li> +</ol> +!! end + +!! test +References: 9. Generate missing references list at the end +!! wikitext +A <ref>foo</ref> +B <ref group="inexistent">bar</ref> +!! html/parsoid +<p>A <sup class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup> B <sup class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{"group":"inexistent"}}'><a href="./Main_Page#cite_note-2" data-mw-group="inexistent"><span class="mw-reflink-text">[inexistent 1]</span></a></sup></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{},"autoGenerated":true}'> +<li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li> +</ol> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw-group="inexistent" data-mw='{"name":"references","attrs":{"group":"inexistent"},"autoGenerated":true}'> +<li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" data-mw-group="inexistent" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">bar</span></li> +</ol> +!! end + +!! test +References: 10.1. New <references/> shouldn't be added for unrelated edits. +!! options +parsoid={ + "modes": ["selser"], + "changes": [["#x", "remove"]], + "selser": "noauto" +} +!! wikitext +Unrelated text<span id="x"> that's going to disappear</span>. +A <ref>foo</ref> +!! wikitext/edited +Unrelated text. +A <ref>foo</ref> +!! end + +!! test +References: 10.2. New <references/> shouldn't be added for unrelated edits. +!! options +parsoid={ + "modes": ["selser"], + "changes": [["#x", "remove"]], + "selser": "noauto", + "responsiveReferences": { "enabled": true, "threshold": 2 } +} +!! wikitext +Unrelated text<span id="x"> that's going to disappear</span>. +A <ref>foo</ref> +!! wikitext/edited +Unrelated text. +A <ref>foo</ref> +!! end + +# Doesn't wt2wt cleanly because we don't encode the & in html2wt direction +!! test +Entities in ref name +!! config +wgFragmentMode=[ 'html5', 'legacy' ] +!! options +parsoid=wt2html,html2html +!! wikitext +<ref name="test & me {{echo|foo}}">hi</ref> +<references /> +!! html/php +<p><sup id="cite_ref-test_&_me_{{echo|foo}}_1-0" class="reference"><a href="#cite_note-test_&_me_{{echo|foo}}-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-test_&_me_{{echo|foo}}-1"><span class="mw-cite-backlink"><a href="#cite_ref-test_&_me_{{echo|foo}}_1-0">↑</a></span> <span class="reference-text">hi</span> +</li> +</ol></div> + +!! html/parsoid +<p><sup about="#mwt2" class="mw-ref" id="cite_ref-test_&_me_{{echo|foo}}_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-test_&_me_{{echo|foo}}-1"},"attrs":{"name":"test & me {{echo|foo}}"}}'><a href="./Main_Page#cite_note-test_&_me_{{echo|foo}}-1"><span class="mw-reflink-text">[1]</span></a></sup></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> +<li about="#cite_note-test_&_me_{{echo|foo}}-1" id="cite_note-test_&_me_{{echo|foo}}-1"><a href="./Main_Page#cite_ref-test_&_me_{{echo|foo}}_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-test_&_me_{{echo|foo}}-1" class="mw-reference-text">hi</span></li> +</ol> +!! end + +## The output here may look funny, but it's what the php parser will do. The +## unclosed references tag becomes escaped text, and then a new references +## tag is auto-generated. The test is wt2html only because it roundtrips with +## nowiki tags, and the auto-generated references tag is only dropped in +## rtTestMode. +!! test +Generate references for unclosed references tag +!! options +parsoid=wt2html +!! wikitext +a<ref>foo</ref> + +<references> +!! html/parsoid +<p>a<sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup></p> + +<p><references></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{},"autoGenerated":true}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li></ol> +!! end + +!! test +New reference serializes on its own line +!! options +parsoid=wt2wt,html2wt +!! wikitext +foo +<references /> +!! html/parsoid +foo<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt2" data-mw='{"name":"references","attrs":{}}'></ol> +!! end + +!! test +Ref in ref +!! wikitext +test <ref>hi {{refinref}}</ref> +<references /> +!! html/php +<p>test <sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">hi </span> +</li> +</ol></div> +<p><span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: <code><ref></code> tag defined in <code><references></code> has no name attribute.</span> +</p> +!! html/parsoid +<p>test <sup about="#mwt4" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">hi <span about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"refinref","href":"./Template:Refinref"},"params":{},"i":0}}]}'></span></span></li></ol> +!! end + +## Parsoid responsive references tests + +!! test +Responsive references: disabled, autogenerated +!! options +parsoid={ + "modes": ["wt2html"], + "responsiveReferences": { "enabled": false, "threshold": 2 } +} +!! wikitext +Test <ref>1</ref><ref>2</ref> +!! html/parsoid +<p>Test <sup about="#mwt3" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup><sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="./Main_Page#cite_note-2" style="counter-reset: mw-Ref 2;"><span class="mw-reflink-text">[2]</span></a></sup></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{},"autoGenerated":true}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">1</span></li><li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">2</span></li></ol> +!! end + +!! test +Responsive references: enabled, autogenerated +!! options +parsoid={ + "modes": ["wt2html"], + "responsiveReferences": { "enabled": true, "threshold": 2 } +} +!! wikitext +Test <ref>1</ref><ref>2</ref> +!! html/parsoid +<p>Test <sup about="#mwt3" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup><sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="./Main_Page#cite_note-2" style="counter-reset: mw-Ref 2;"><span class="mw-reflink-text">[2]</span></a></sup></p> +<div class="mw-references-wrap" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{},"autoGenerated":true}'><ol class="mw-references references"><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">1</span></li><li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">2</span></li></ol></div> +!! end + +!! test +Responsive references: enabled, autogenerated, exceed +!! options +parsoid={ + "modes": ["wt2html"], + "responsiveReferences": { "enabled": true, "threshold": 1 } +} +!! wikitext +Test <ref>1</ref><ref>2</ref> +!! html/parsoid +<p>Test <sup about="#mwt3" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup><sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="./Main_Page#cite_note-2" style="counter-reset: mw-Ref 2;"><span class="mw-reflink-text">[2]</span></a></sup></p> +<div class="mw-references-wrap mw-references-columns" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{},"autoGenerated":true}'><ol class="mw-references references"><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">1</span></li><li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">2</span></li></ol></div> +!! end + +!! test +Responsive references: disabled +!! options +parsoid={ + "responsiveReferences": { "enabled": false, "threshold": 2 } +} +!! wikitext +Test <ref>1</ref><ref>2</ref> +<references /> +!! html/parsoid +<p>Test <sup about="#mwt3" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup><sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="./Main_Page#cite_note-2" style="counter-reset: mw-Ref 2;"><span class="mw-reflink-text">[2]</span></a></sup></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">1</span></li><li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">2</span></li></ol> +!! end + +!! test +Responsive references: enabled +!! options +parsoid={ + "responsiveReferences": { "enabled": true, "threshold": 2 } +} +!! wikitext +Test <ref>1</ref><ref>2</ref> +<references /> +!! html/parsoid +<p>Test <sup about="#mwt3" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup><sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="./Main_Page#cite_note-2" style="counter-reset: mw-Ref 2;"><span class="mw-reflink-text">[2]</span></a></sup></p> +<div class="mw-references-wrap" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><ol class="mw-references references"><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">1</span></li><li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">2</span></li></ol></div> +!! end + +!! test +Responsive references: enabled, exceed +!! options +parsoid={ + "responsiveReferences": { "enabled": true, "threshold": 1 } +} +!! wikitext +Test <ref>1</ref><ref>2</ref> +<references /> +!! html/parsoid +<p>Test <sup about="#mwt3" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup><sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="./Main_Page#cite_note-2" style="counter-reset: mw-Ref 2;"><span class="mw-reflink-text">[2]</span></a></sup></p> +<div class="mw-references-wrap mw-references-columns" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><ol class="mw-references references"><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">1</span></li><li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">2</span></li></ol></div> +!! end + +!! test +Responsive references: disabled, explicit +!! options +parsoid={ + "responsiveReferences": { "enabled": false, "threshold": 2 } +} +!! wikitext +Test <ref>1</ref><ref>2</ref> +<references responsive="" /> +!! html/parsoid +<p>Test <sup about="#mwt3" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup><sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="./Main_Page#cite_note-2" style="counter-reset: mw-Ref 2;"><span class="mw-reflink-text">[2]</span></a></sup></p> +<div class="mw-references-wrap" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{"responsive":""}}'><ol class="mw-references references"><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">1</span></li><li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">2</span></li></ol></div> +!! end + +!! test +Responsive references: disabled, explicit, exceed +!! options +parsoid={ + "responsiveReferences": { "enabled": false, "threshold": 1 } +} +!! wikitext +Test <ref>1</ref><ref>2</ref> +<references responsive="" /> +!! html/parsoid +<p>Test <sup about="#mwt3" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup><sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="./Main_Page#cite_note-2" style="counter-reset: mw-Ref 2;"><span class="mw-reflink-text">[2]</span></a></sup></p> +<div class="mw-references-wrap mw-references-columns" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{"responsive":""}}'><ol class="mw-references references"><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">1</span></li><li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">2</span></li></ol></div> +!! end + +!! test +Responsive references: enabled, explicit off +!! options +parsoid={ + "responsiveReferences": { "enabled": true, "threshold": 2 } +} +!! wikitext +Test <ref>1</ref><ref>2</ref> +<references responsive="0" /> +!! html/parsoid +<p>Test <sup about="#mwt3" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup><sup about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="./Main_Page#cite_note-2" style="counter-reset: mw-Ref 2;"><span class="mw-reflink-text">[2]</span></a></sup></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{"responsive":"0"}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">1</span></li><li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">2</span></li></ol> +!! end + +!! test +Responsive references: roundtrip templates +!! options +parsoid={ + "responsiveReferences": { "enabled": true, "threshold": 2 } +} +!! wikitext +test <ref>123</ref> + +{{echo|haha<references/>}} +!! html/parsoid +<p>test <sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup></p> + +<p about="#mwt4" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"haha<references/>"}},"i":0}}]}'>haha</p><div class="mw-references-wrap" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'><ol class="mw-references references"><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">123</span></li></ol></div> +!! end + +## End Parsoid responsive references tests + +!! article +Template:CircularRef +!! text +<ref>Hi {{CircularRef}}</ref> +!! endarticle + +!! test +CircularRef +!! wikitext +<ref>Hi {{CircularRef}}</ref> +<references /> +!! html/php +<p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup> +</p> +<div class="mw-references-wrap"><ol class="references"> +<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Hi </span> +</li> +</ol></div> +<p><span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: <code><ref></code> tag defined in <code><references></code> has no name attribute.</span> +</p> +!! html/parsoid +<p><sup about="#mwt4" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup></p> +<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">Hi <span about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"CircularRef","href":"./Template:CircularRef"},"params":{},"i":0}}]}'></span></span></li></ol> +!! end diff --git a/www/wiki/extensions/Cite/tests/phan/config.php b/www/wiki/extensions/Cite/tests/phan/config.php new file mode 100644 index 00000000..49ddcba9 --- /dev/null +++ b/www/wiki/extensions/Cite/tests/phan/config.php @@ -0,0 +1,7 @@ +<?php + +$cfg = require __DIR__ . '/../../vendor/mediawiki/mediawiki-phan-config/src/config.php'; +// Due to creation of Parser::$extCite property +$cfg['suppress_issue_types'][] = 'PhanUndeclaredProperty'; + +return $cfg; |