mediawiki-extensions-Cite/tests/parser/bookReferencing.txt
Adam Wight 170484e933 Annotate TODOs with task number
Each of these TODOs is something that needs to be fixed or implemented,
so it's helpful to map them to tasks.

Change-Id: I807208392d8a609d7f3b371dc3560a48f3578092
2020-01-09 13:13:48 +01:00

867 lines
37 KiB
Plaintext

!! test
Book Referencing attribute rejected by default
!! config
wgCiteBookReferencing=false
!! wikitext
<ref name="parent">[foo]</ref>
<ref extends="parent">[bar]</ref>
!! html/php
<p><sup id="cite_ref-parent_1-0" class="reference"><a href="#cite_note-parent-1">&#91;1&#93;</a></sup>
<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
</p>
invalid names, e.g. too many</span><div class="mw-references-wrap"><ol class="references">
<li id="cite_note-parent-1"><span class="mw-cite-backlink"><a href="#cite_ref-parent_1-0">↑</a></span> <span class="reference-text">[foo]</span>
</li>
</ol></div>
!! end
!! test
Book Referencing attribute allowed with feature flag set
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="parent">[foo]</ref>
<ref extends="parent">[bar]</ref>
!! html/php
<p><sup id="cite_ref-parent_1-0" class="reference"><a href="#cite_note-parent-1">&#91;1&#93;</a></sup>
</p>
<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;1.1&#93;</a></sup><div class="mw-references-wrap"><ol class="references">
<li id="cite_note-parent-1"><span class="mw-cite-backlink"><a href="#cite_ref-parent_1-0">↑</a></span> <span class="reference-text">[foo]</span>
<ol class="mw-extended-references"><li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">[bar]</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T236256 - Extending the same base multiple times is fine
!! options
language=de
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">book</ref>
<ref extends="a">page 2</ref>
<ref extends="a">page 3</ref>
<references />
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;1.1&#93;</a></sup>
<sup id="cite_ref-3" class="reference"><a href="#cite_note-3">&#91;1.2&#93;</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">book</span>
<ol class="mw-extended-references"><li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">page 2</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text">page 3</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
Extended references can be reused
!! options
language=de
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">book</ref>
<ref extends="a" name="b">page 2</ref>
<ref name="b" />
!! html
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-b_2-0" class="reference"><a href="#cite_note-b-2">&#91;1.1&#93;</a></sup>
</p>
<sup id="cite_ref-b_2-1" class="reference"><a href="#cite_note-b-2">&#91;1.1&#93;</a></sup><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">book</span>
<ol class="mw-extended-references"><li id="cite_note-b-2"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-b_2-0">1.1,0</a></sup> <sup><a href="#cite_ref-b_2-1">1.1,1</a></sup></span> <span class="reference-text">page 2</span>
</li>
</ol></li>
</ol></div>
!! end
# TODO: T242141 - The number for the first <ref> must be "1.1", not just "1"
!! test
T240424 - Subreference reused as normal ref before its full definition
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="b" />
<ref name="b" extends="a">page 2</ref>
<ref name="a">book</ref>
!! html
<p><sup id="cite_ref-b_1-0" class="reference"><a href="#cite_note-b-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-b_1-1" class="reference"><a href="#cite_note-b-1">&#91;1.1&#93;</a></sup>
</p>
<sup id="cite_ref-a_2-0" class="reference"><a href="#cite_note-a-2">&#91;1&#93;</a></sup><div class="mw-references-wrap"><ol class="references">
<li id="cite_note-a-2"><span class="mw-cite-backlink"><a href="#cite_ref-a_2-0">↑</a></span> <span class="reference-text">book</span>
<ol class="mw-extended-references"><li id="cite_note-b-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-b_1-0">1.1.0</a></sup> <sup><a href="#cite_ref-b_1-1">1.1.1</a></sup></span> <span class="reference-text">page 2</span>
</li>
</ol></li>
</ol></div>
!! end
# TODO: T242141 - This currently renders as if the extends="…" is not there
!! test
T240424 - Extended reference reused before defined in the <references> section
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a" />
<ref name="b" />
<references>
<ref name="b" extends="a">page 2</ref>
<ref name="a">book</ref>
</references>
!! html
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-b_2-0" class="reference"><a href="#cite_note-b-2">&#91;2&#93;</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">book</span>
</li>
<li id="cite_note-b-2"><span class="mw-cite-backlink"><a href="#cite_ref-b_2-0">↑</a></span> <span class="reference-text">page 2</span>
</li>
</ol></div>
!! end
!! test
T236256 - Naming book references is fine
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">book</ref>
<ref extends="a" name="b">page 2</ref>
<ref extends="a" name="c">page 3</ref>
<ref name="b" />
<ref name="c" />
<references />
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-b_2-0" class="reference"><a href="#cite_note-b-2">&#91;1.1&#93;</a></sup>
<sup id="cite_ref-c_3-0" class="reference"><a href="#cite_note-c-3">&#91;1.2&#93;</a></sup>
<sup id="cite_ref-b_2-1" class="reference"><a href="#cite_note-b-2">&#91;1.1&#93;</a></sup>
<sup id="cite_ref-c_3-1" class="reference"><a href="#cite_note-c-3">&#91;1.2&#93;</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">book</span>
<ol class="mw-extended-references"><li id="cite_note-b-2"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-b_2-0">1.1.0</a></sup> <sup><a href="#cite_ref-b_2-1">1.1.1</a></sup></span> <span class="reference-text">page 2</span>
</li>
<li id="cite_note-c-3"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-c_3-0">1.2.0</a></sup> <sup><a href="#cite_ref-c_3-1">1.2.1</a></sup></span> <span class="reference-text">page 3</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T236256 - Extending a reference that doesn't exist #1
!! config
wgCiteBookReferencing=true
!! wikitext
<ref extends="a">page 1</ref>
!! html/php
<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1.1&#93;</a></sup><div class="mw-references-wrap"><ol class="references">
<li id="cite_note-a-"><span class="mw-cite-backlink">↑ </span> <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>a</code></span><ol class="mw-extended-references"><li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">page 1</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T236256 - Extending a reference that doesn't exist #2
!! config
wgCiteBookReferencing=true
!! wikitext
<ref>book</ref>
<ref extends="a">page 1</ref>
!! html/php
<p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1&#93;</a></sup>
</p>
<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;2.1&#93;</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">book</span>
</li>
<li id="cite_note-a-"><span class="mw-cite-backlink">↑ </span> <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>a</code></span><ol class="mw-extended-references"><li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">page 1</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T236256 - Reference with the same name defined twice
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">book</ref>
<ref name="a">magazine</ref>
<ref extends="a">page 1</ref>
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-a_1-1" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
</p>
<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;1.1&#93;</a></sup><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">book <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag; name "a" defined multiple times with different content</span></span>
<ol class="mw-extended-references"><li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">page 1</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T236256 - Can't reuse a name for two book references
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">book</ref>
<ref extends="a" name="b">page 2</ref>
<ref extends="a" name="b">page 3</ref>
<references />
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-b_2-0" class="reference"><a href="#cite_note-b-2">&#91;1.1&#93;</a></sup>
<sup id="cite_ref-b_2-1" class="reference"><a href="#cite_note-b-2">&#91;1.1&#93;</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">book</span>
<ol class="mw-extended-references"><li id="cite_note-b-2"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-b_2-0">1.1.0</a></sup> <sup><a href="#cite_ref-b_2-1">1.1.1</a></sup></span> <span class="reference-text">page 2 <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag; name "b" defined multiple times with different content</span></span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T236256 - Can't extend a book reference (no nesting)
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">book</ref>
<ref extends="a" name="b">page 2</ref>
<ref extends="b">section 3</ref>
<references />
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-b_2-0" class="reference"><a href="#cite_note-b-2">&#91;1.1&#93;</a></sup>
<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
invalid names, e.g. too many</span>
</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">book</span>
<ol class="mw-extended-references"><li id="cite_note-b-2"><span class="mw-cite-backlink"><a href="#cite_ref-b_2-0">↑</a></span> <span class="reference-text">page 2</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T236256 - Can't extend a book reference (no nesting), specified in reverse order
!! config
wgCiteBookReferencing=true
!! wikitext
<ref extends="b">section 3</ref>
<ref extends="a" name="b">page 2</ref>
<ref name="a">book</ref>
<references />
!! html/php
<p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1.1&#93;</a></sup>
<sup id="cite_ref-b_2-0" class="reference"><a href="#cite_note-b-2">&#91;1.1&#93;</a></sup>
<sup id="cite_ref-a_3-0" class="reference"><a href="#cite_note-a-3">&#91;1&#93;</a></sup>
</p>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-a-3"><span class="mw-cite-backlink"><a href="#cite_ref-a_3-0">↑</a></span> <span class="reference-text">book</span>
<ol class="mw-extended-references"><li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">section 3 <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
invalid names, e.g. too many</span></span>
</li>
<li id="cite_note-b-2"><span class="mw-cite-backlink"><a href="#cite_ref-b_2-0">↑</a></span> <span class="reference-text">page 2</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T236256 - Named reference without text
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a" />
<ref extends="a">page 1</ref>
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
</p>
<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;1.1&#93;</a></sup><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="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>a</code></span><ol class="mw-extended-references"><li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">page 1</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T236256 - No text for a book reference
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="foo">book</ref>
<ref extends="foo" />
!! html/php
<p><sup id="cite_ref-foo_1-0" class="reference"><a href="#cite_note-foo-1">&#91;1&#93;</a></sup>
</p>
<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: The opening <code>&lt;ref&gt;</code> tag is malformed or has a bad name</span><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">book</span>
</li>
</ol></div>
!! end
!! test
T236256 - Empty text for a book reference
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="foo">book</ref>
<ref extends="foo"></ref>
!! html/php
<p><sup id="cite_ref-foo_1-0" class="reference"><a href="#cite_note-foo-1">&#91;1&#93;</a></sup>
<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
</p>
refs with no name must have content</span><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">book</span>
</li>
</ol></div>
!! end
!! test
T236256 - De-facto empty text for a book reference
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="foo">book</ref>
<ref extends="foo"> </ref>
!! html/php
<p><sup id="cite_ref-foo_1-0" class="reference"><a href="#cite_note-foo-1">&#91;1&#93;</a></sup>
<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
</p>
refs with no name must have content</span><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">book</span>
</li>
</ol></div>
!! end
!! test
T236256 - Everything in the same group
!! config
wgCiteBookReferencing=true
!! wikitext
<ref group="g1" name="a">book</ref>
<ref group="g1" extends="a" name="b">page</ref>
<ref group="g1" name="b" />
<references group="g1"/>
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;g1 1&#93;</a></sup>
<sup id="cite_ref-b_2-0" class="reference"><a href="#cite_note-b-2">&#91;g1 1.1&#93;</a></sup>
<sup id="cite_ref-b_2-1" class="reference"><a href="#cite_note-b-2">&#91;g1 1.1&#93;</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">book</span>
<ol class="mw-extended-references"><li id="cite_note-b-2"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-b_2-0">1.1.0</a></sup> <sup><a href="#cite_ref-b_2-1">1.1.1</a></sup></span> <span class="reference-text">page</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T236256 - Base and book reference in different groups
!! config
wgCiteBookReferencing=true
!! wikitext
<ref group="g1" name="a">book</ref>
<ref group="g2" extends="a">page</ref>
<references group="g1"/>
<references group="g2"/>
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;g1 1&#93;</a></sup>
<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;g2 1.1&#93;</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">book</span>
</li>
</ol></div>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-a-"><span class="mw-cite-backlink">↑ </span> <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>a</code></span><ol class="mw-extended-references"><li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">page</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T236256 - Extending in the unnamed default group
!! config
wgCiteBookReferencing=true
!! wikitext
<ref group="g1" name="a">book</ref>
<ref extends="a">page</ref>
<references group="g1"/>
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;g1 1&#93;</a></sup>
<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;1.1&#93;</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">book</span>
</li>
</ol></div><div class="mw-references-wrap"><ol class="references">
<li id="cite_note-a-"><span class="mw-cite-backlink">↑ </span> <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>a</code></span><ol class="mw-extended-references"><li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">page</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T236256 - Base in the unnamed default group
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">book</ref>
<ref group="g1" extends="a">page</ref>
<references group="g1"/>
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;g1 1.1&#93;</a></sup>
</p>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-a-"><span class="mw-cite-backlink">↑ </span> <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>a</code></span><ol class="mw-extended-references"><li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">page</span>
</li>
</ol></li>
</ol></div><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">book</span>
</li>
</ol></div>
!! end
!! test
T236256 - Extending a multi-part ref should be fine
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">part 1</ref>
<ref follow="a">part 2</ref>
<ref extends="a">ok</ref>
<references />
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
</p><p><sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;1.1&#93;</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">part 1 part 2</span>
<ol class="mw-extended-references"><li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">ok</span>
</li>
</ol></li>
</ol></div>
!! end
# TODO: T242227 - Should render an error at the third reference.
!! test
T236256 - Dont allow splitting a book reference for now
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">book</ref>
<ref extends="a" name="b">page 2</ref>
<ref follow="b">and page 3 the same time?</ref>
<references />
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-b_2-0" class="reference"><a href="#cite_note-b-2">&#91;1.1&#93;</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">book</span>
<ol class="mw-extended-references"><li id="cite_note-b-2"><span class="mw-cite-backlink"><a href="#cite_ref-b_2-0">↑</a></span> <span class="reference-text">page 2 and page 3 the same time?</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T236256 - Can't be a follow up and a book reference the same time
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">book 1</ref>
<ref follow="a" extends="a">huh?</ref>
<references />
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
invalid names, e.g. too many</span>
</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">book 1</span>
</li>
</ol></div>
!! end
!! test
T236256 - Can't be a follow up and a book reference the same time, even when referencing 2 different bases
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">book 1</ref>
<ref name="b">book 2</ref>
<ref follow="a" extends="b">huh?</ref>
<references />
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-b_2-0" class="reference"><a href="#cite_note-b-2">&#91;2&#93;</a></sup>
<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
invalid names, e.g. too many</span>
</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">book 1</span>
</li>
<li id="cite_note-b-2"><span class="mw-cite-backlink"><a href="#cite_ref-b_2-0">↑</a></span> <span class="reference-text">book 2</span>
</li>
</ol></div>
!! end
!! test
Extending a <ref> that doesn't appear in the text, but in <references>
!! config
wgCiteBookReferencing=true
!! wikitext
<ref extends="a">Page 2</ref>
<references>
<ref name="a">Book</ref>
</references>
!! html
<p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1.1&#93;</a></sup>
</p>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-a-"><span class="mw-cite-backlink">↑ </span> <span class="reference-text">Book</span>
<ol class="mw-extended-references"><li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Page 2</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T239810: Extending a <ref> that doesn't appear in the text, but in {{#tag:references}}
!! config
wgCiteBookReferencing=true
!! wikitext
<ref extends="a">Page 2</ref>
{{#tag:references|
<ref name="a">Book</ref>
}}
!! html
<p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1.1&#93;</a></sup>
</p>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-a-2"><span class="mw-cite-backlink">↑ </span> <span class="reference-text">Book</span>
<ol class="mw-extended-references"><li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Page 2</span>
</li>
</ol></li>
</ol></div>
!! end
# TODO: T242141 - This should be invalid, there's no way to know that `footwo` should be subnumbered in a one-pass parse.
!! test
Extends <ref> defined in <references> called with #tag
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="foo">BAR</ref>
<ref name="footwo" />
{{#tag:references|
<ref name="footwo" extends="foo">p. 10</ref>
}}
!! html
<p><sup id="cite_ref-foo_1-0" class="reference"><a href="#cite_note-foo-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-footwo_2-0" class="reference"><a href="#cite_note-footwo-2">&#91;2&#93;</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>
<ol class="mw-extended-references"><li id="cite_note-footwo-2"><span class="mw-cite-backlink"><a href="#cite_ref-footwo_2-0">↑</a></span> <span class="reference-text">p. 10</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
Extends parent <ref> defined in <references> called with #tag
!! config
wgCiteBookReferencing=true
!! wikitext
<ref>BAR</ref>
<ref name="footwo" extends="foo">page 7</ref>
<ref name="foo" />
{{#tag:references|
<ref name="foo">book name</ref>
}}
!! html
<p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-footwo_2-0" class="reference"><a href="#cite_note-footwo-2">&#91;2.1&#93;</a></sup>
<sup id="cite_ref-foo_3-0" class="reference"><a href="#cite_note-foo-3">&#91;2&#93;</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">BAR</span>
</li>
<li id="cite_note-foo-3"><span class="mw-cite-backlink"><a href="#cite_ref-foo_3-0">↑</a></span> <span class="reference-text">book name</span>
<ol class="mw-extended-references"><li id="cite_note-footwo-2"><span class="mw-cite-backlink"><a href="#cite_ref-footwo_2-0">↑</a></span> <span class="reference-text">page 7</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
Interleaved extends groups
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">text-a</ref>
<ref name="c">text-c</ref>
<ref extends="a">page b</ref>
<ref extends="c">page d</ref>
<references />
!! html
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-c_2-0" class="reference"><a href="#cite_note-c-2">&#91;2&#93;</a></sup>
</p><p><sup id="cite_ref-3" class="reference"><a href="#cite_note-3">&#91;1.1&#93;</a></sup>
<sup id="cite_ref-4" class="reference"><a href="#cite_note-4">&#91;2.1&#93;</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">text-a</span>
<ol class="mw-extended-references"><li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text">page b</span>
</li>
</ol></li>
<li id="cite_note-c-2"><span class="mw-cite-backlink"><a href="#cite_ref-c_2-0">↑</a></span> <span class="reference-text">text-c</span>
<ol class="mw-extended-references"><li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text">page d</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
Multiple groups with extends
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">text-a</ref>
<ref extends="a">page b</ref>
<references />
<ref name="c">text-c</ref>
<ref extends="c">page d</ref>
<references />
!! html
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;1.1&#93;</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">text-a</span>
<ol class="mw-extended-references"><li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">page b</span>
</li>
</ol></li>
</ol></div>
<p><sup id="cite_ref-c_3-0" class="reference"><a href="#cite_note-c-3">&#91;1&#93;</a></sup>
<sup id="cite_ref-4" class="reference"><a href="#cite_note-4">&#91;1.1&#93;</a></sup>
</p>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-c-3"><span class="mw-cite-backlink"><a href="#cite_ref-c_3-0">↑</a></span> <span class="reference-text">text-c</span>
<ol class="mw-extended-references"><li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text">page d</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
Multiple groups with extends, duplicated names across groups
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">text-a</ref>
<ref extends="a">page b</ref>
<references />
<ref name="a">text-c</ref>
<ref extends="a">page d</ref>
<references />
!! html
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;1.1&#93;</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">text-a</span>
<ol class="mw-extended-references"><li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">page b</span>
</li>
</ol></li>
</ol></div>
<p><sup id="cite_ref-a_3-0" class="reference"><a href="#cite_note-a-3">&#91;1&#93;</a></sup>
<sup id="cite_ref-4" class="reference"><a href="#cite_note-4">&#91;1.1&#93;</a></sup>
</p>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-a-3"><span class="mw-cite-backlink"><a href="#cite_ref-a_3-0">↑</a></span> <span class="reference-text">text-c</span>
<ol class="mw-extended-references"><li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text">page d</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
Intervening ref before extends
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">book</ref>
<ref>another</ref>
<ref extends="a">page 2</ref>
<references />
!! html/php
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;2&#93;</a></sup>
<sup id="cite_ref-3" class="reference"><a href="#cite_note-3">&#91;1.1&#93;</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">book</span>
<ol class="mw-extended-references"><li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text">page 2</span>
</li>
</ol></li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">another</span>
</li>
</ol></div>
!! end
!! test
Normal refs after extends
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a">text-a</ref>
<ref extends="a">page b</ref>
<ref name="c">text-c</ref>
<references />
!! html
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;1.1&#93;</a></sup>
</p><p><sup id="cite_ref-c_3-0" class="reference"><a href="#cite_note-c-3">&#91;2&#93;</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">text-a</span>
<ol class="mw-extended-references"><li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">page b</span>
</li>
</ol></li>
<li id="cite_note-c-3"><span class="mw-cite-backlink"><a href="#cite_ref-c_3-0">↑</a></span> <span class="reference-text">text-c</span>
</li>
</ol></div>
!! end
!! test
T242110: Copy-pasted, named sub-references should be merged and not mess with the numbering
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a1" extends="a">a1</ref>
<ref name="a1" extends="a">a1</ref>
<references>
<ref name="a">a</ref>
</references>
!! html
<p><sup id="cite_ref-a1_1-0" class="reference"><a href="#cite_note-a1-1">&#91;1.1&#93;</a></sup>
<sup id="cite_ref-a1_1-1" class="reference"><a href="#cite_note-a1-1">&#91;1.1&#93;</a></sup>
</p>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-a-"><span class="mw-cite-backlink">↑ </span> <span class="reference-text">a</span>
<ol class="mw-extended-references"><li id="cite_note-a1-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-a1_1-0">1.1.0</a></sup> <sup><a href="#cite_ref-a1_1-1">1.1.1</a></sup></span> <span class="reference-text">a1</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T242110: Reused sub-references should be merged and not mess with the numbering
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a1" extends="a">a1</ref>
<ref name="a1" extends="a" />
<references>
<ref name="a">a</ref>
</references>
!! html
<p><sup id="cite_ref-a1_1-0" class="reference"><a href="#cite_note-a1-1">&#91;1.1&#93;</a></sup>
<sup id="cite_ref-a1_1-1" class="reference"><a href="#cite_note-a1-1">&#91;1.1&#93;</a></sup>
</p>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-a-"><span class="mw-cite-backlink">↑ </span> <span class="reference-text">a</span>
<ol class="mw-extended-references"><li id="cite_note-a1-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-a1_1-0">1.1.0</a></sup> <sup><a href="#cite_ref-a1_1-1">1.1.1</a></sup></span> <span class="reference-text">a1</span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T242110: Bad extends attributes on reused sub-references should report an error
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a1" extends="a">a1</ref>
<ref name="a1" extends="unknown" />
<references>
<ref name="a">a</ref>
</references>
!! html
<p><sup id="cite_ref-a1_1-0" class="reference"><a href="#cite_note-a1-1">&#91;1.1&#93;</a></sup>
<sup id="cite_ref-a1_1-1" class="reference"><a href="#cite_note-a1-1">&#91;1.1&#93;</a></sup>
</p>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-a-"><span class="mw-cite-backlink">↑ </span> <span class="reference-text">a</span>
<ol class="mw-extended-references"><li id="cite_note-a1-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-a1_1-0">1.1.0</a></sup> <sup><a href="#cite_ref-a1_1-1">1.1.1</a></sup></span> <span class="reference-text">a1 <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag; name "a1" defined multiple times with different content</span></span>
</li>
</ol></li>
</ol></div>
!! end
!! test
T242110: Copy-pasted, named sub-references should appear in proper order
!! config
wgCiteBookReferencing=true
!! wikitext
<ref name="a1" extends="a">a1</ref>
<ref name="a1" extends="a">a1</ref>
<ref name="b1" extends="b">b1</ref>
<ref name="b1" extends="b" />
<ref name="c1" extends="c">c1</ref>
<ref name="c1" />
<references>
<ref name="a">a</ref>
<ref name="b">a</ref>
<ref name="c">a</ref>
</references>
!! html
<p><sup id="cite_ref-a1_1-0" class="reference"><a href="#cite_note-a1-1">&#91;1.1&#93;</a></sup>
<sup id="cite_ref-a1_1-1" class="reference"><a href="#cite_note-a1-1">&#91;1.1&#93;</a></sup>
<sup id="cite_ref-b1_2-0" class="reference"><a href="#cite_note-b1-2">&#91;2.1&#93;</a></sup>
<sup id="cite_ref-b1_2-1" class="reference"><a href="#cite_note-b1-2">&#91;2.1&#93;</a></sup>
<sup id="cite_ref-c1_3-0" class="reference"><a href="#cite_note-c1-3">&#91;3.1&#93;</a></sup>
<sup id="cite_ref-c1_3-1" class="reference"><a href="#cite_note-c1-3">&#91;3.1&#93;</a></sup>
</p>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-a-"><span class="mw-cite-backlink">↑ </span> <span class="reference-text">a</span>
<ol class="mw-extended-references"><li id="cite_note-a1-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-a1_1-0">1.1.0</a></sup> <sup><a href="#cite_ref-a1_1-1">1.1.1</a></sup></span> <span class="reference-text">a1</span>
</li>
</ol></li>
<li id="cite_note-b-"><span class="mw-cite-backlink">↑ </span> <span class="reference-text">a</span>
<ol class="mw-extended-references"><li id="cite_note-b1-2"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-b1_2-0">2.1.0</a></sup> <sup><a href="#cite_ref-b1_2-1">2.1.1</a></sup></span> <span class="reference-text">b1</span>
</li>
</ol></li>
<li id="cite_note-c-"><span class="mw-cite-backlink">↑ </span> <span class="reference-text">a</span>
<ol class="mw-extended-references"><li id="cite_note-c1-3"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-c1_3-0">3.1.0</a></sup> <sup><a href="#cite_ref-c1_3-1">3.1.1</a></sup></span> <span class="reference-text">c1</span>
</li>
</ol></li>
</ol></div>
!! end