You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
941 lines
26 KiB
941 lines
26 KiB
7 years ago
|
#! /usr/bin/env python
|
||
|
|
||
|
# $Id: test_hyperlinks.py 8055 2017-04-06 13:10:34Z milde $
|
||
|
# Author: David Goodger <goodger@python.org>
|
||
|
# Copyright: This module has been placed in the public domain.
|
||
|
|
||
|
"""
|
||
|
Tests for docutils.transforms.references.Hyperlinks.
|
||
|
"""
|
||
|
|
||
|
from __init__ import DocutilsTestSupport
|
||
|
from docutils.transforms.references import PropagateTargets, \
|
||
|
AnonymousHyperlinks, IndirectHyperlinks, ExternalTargets, \
|
||
|
InternalTargets, DanglingReferences
|
||
|
|
||
|
from docutils.parsers.rst import Parser
|
||
|
|
||
|
|
||
|
def suite():
|
||
|
parser = Parser()
|
||
|
s = DocutilsTestSupport.TransformTestSuite(parser)
|
||
|
s.generateTests(totest)
|
||
|
return s
|
||
|
|
||
|
totest = {}
|
||
|
|
||
|
# Exhaustive listing of hyperlink variations: every combination of
|
||
|
# target/reference, direct/indirect, internal/external, and named/anonymous,
|
||
|
# plus embedded URIs.
|
||
|
totest['exhaustive_hyperlinks'] = ((PropagateTargets, AnonymousHyperlinks,
|
||
|
IndirectHyperlinks,
|
||
|
ExternalTargets, InternalTargets,
|
||
|
DanglingReferences), [
|
||
|
["""\
|
||
|
direct_ external
|
||
|
|
||
|
.. _direct: http://direct
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
<reference name="direct" refuri="http://direct">
|
||
|
direct
|
||
|
external
|
||
|
<target ids="direct" names="direct" refuri="http://direct">
|
||
|
"""],
|
||
|
["""\
|
||
|
indirect_ external
|
||
|
|
||
|
.. _indirect: xtarget_
|
||
|
.. _xtarget: http://indirect
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
<reference name="indirect" refuri="http://indirect">
|
||
|
indirect
|
||
|
external
|
||
|
<target ids="indirect" names="indirect" refuri="http://indirect">
|
||
|
<target ids="xtarget" names="xtarget" refuri="http://indirect">
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _direct:
|
||
|
|
||
|
direct_ internal
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target refid="direct">
|
||
|
<paragraph ids="direct" names="direct">
|
||
|
<reference name="direct" refid="direct">
|
||
|
direct
|
||
|
internal
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _ztarget:
|
||
|
|
||
|
indirect_ internal
|
||
|
|
||
|
.. _indirect2: ztarget_
|
||
|
.. _indirect: indirect2_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target refid="ztarget">
|
||
|
<paragraph ids="ztarget" names="ztarget">
|
||
|
<reference name="indirect" refid="ztarget">
|
||
|
indirect
|
||
|
internal
|
||
|
<target ids="indirect2" names="indirect2" refid="ztarget">
|
||
|
<target ids="indirect" names="indirect" refid="ztarget">
|
||
|
"""],
|
||
|
["""\
|
||
|
Implicit
|
||
|
--------
|
||
|
|
||
|
indirect_ internal
|
||
|
|
||
|
.. _indirect: implicit_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<section ids="implicit" names="implicit">
|
||
|
<title>
|
||
|
Implicit
|
||
|
<paragraph>
|
||
|
<reference name="indirect" refid="implicit">
|
||
|
indirect
|
||
|
internal
|
||
|
<target ids="indirect" names="indirect" refid="implicit">
|
||
|
"""],
|
||
|
["""\
|
||
|
Implicit
|
||
|
--------
|
||
|
|
||
|
`multiply-indirect`_ internal
|
||
|
|
||
|
.. _multiply-indirect: indirect_
|
||
|
.. _indirect: implicit_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<section ids="implicit" names="implicit">
|
||
|
<title>
|
||
|
Implicit
|
||
|
<paragraph>
|
||
|
<reference name="multiply-indirect" refid="implicit">
|
||
|
multiply-indirect
|
||
|
internal
|
||
|
<target ids="multiply-indirect" names="multiply-indirect" refid="implicit">
|
||
|
<target ids="indirect" names="indirect" refid="implicit">
|
||
|
"""],
|
||
|
["""\
|
||
|
circular_ indirect reference
|
||
|
|
||
|
.. _circular: indirect_
|
||
|
.. _indirect: circular_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
<problematic ids="id2" refid="id1">
|
||
|
circular_
|
||
|
indirect reference
|
||
|
<target ids="circular" names="circular" refid="circular">
|
||
|
<problematic ids="id3 indirect" names="indirect" refid="id1">
|
||
|
.. _indirect: circular_
|
||
|
<system_message backrefs="id2 id3" ids="id1" level="3" line="3" source="test data" type="ERROR">
|
||
|
<paragraph>
|
||
|
Indirect hyperlink target "circular" (id="circular") refers to target "indirect", forming a circular reference.
|
||
|
"""],
|
||
|
["""\
|
||
|
Implicit
|
||
|
--------
|
||
|
|
||
|
Duplicate implicit targets.
|
||
|
|
||
|
Implicit
|
||
|
--------
|
||
|
|
||
|
indirect_ internal
|
||
|
|
||
|
.. _indirect: implicit_
|
||
|
|
||
|
Direct internal reference: Implicit_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<section dupnames="implicit" ids="implicit">
|
||
|
<title>
|
||
|
Implicit
|
||
|
<paragraph>
|
||
|
Duplicate implicit targets.
|
||
|
<section dupnames="implicit" ids="id1">
|
||
|
<title>
|
||
|
Implicit
|
||
|
<system_message backrefs="id1" level="1" line="7" source="test data" type="INFO">
|
||
|
<paragraph>
|
||
|
Duplicate implicit target name: "implicit".
|
||
|
<paragraph>
|
||
|
<problematic ids="id3" refid="id2">
|
||
|
indirect_
|
||
|
internal
|
||
|
<target ids="indirect" names="indirect" refname="implicit">
|
||
|
<paragraph>
|
||
|
Direct internal reference:
|
||
|
<problematic ids="id5" refid="id4">
|
||
|
Implicit_
|
||
|
<system_message backrefs="id3" ids="id2" level="3" line="11" source="test data" type="ERROR">
|
||
|
<paragraph>
|
||
|
Indirect hyperlink target "indirect" (id="indirect") refers to target "implicit", which is a duplicate, and cannot be used as a unique reference.
|
||
|
<system_message backrefs="id5" ids="id4" level="3" line="13" source="test data" type="ERROR">
|
||
|
<paragraph>
|
||
|
Duplicate target name, cannot be used as a unique reference: "implicit".
|
||
|
"""],
|
||
|
["""\
|
||
|
`direct external`__
|
||
|
|
||
|
__ http://direct
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
<reference anonymous="1" name="direct external" refuri="http://direct">
|
||
|
direct external
|
||
|
<target anonymous="1" ids="id1" refuri="http://direct">
|
||
|
"""],
|
||
|
["""\
|
||
|
`indirect external`__
|
||
|
|
||
|
__ xtarget_
|
||
|
.. _xtarget: http://indirect
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
<reference anonymous="1" name="indirect external" refuri="http://indirect">
|
||
|
indirect external
|
||
|
<target anonymous="1" ids="id1" refuri="http://indirect">
|
||
|
<target ids="xtarget" names="xtarget" refuri="http://indirect">
|
||
|
"""],
|
||
|
["""\
|
||
|
__
|
||
|
|
||
|
`direct internal`__
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target anonymous="1" refid="id1">
|
||
|
<paragraph ids="id1">
|
||
|
<reference anonymous="1" name="direct internal" refid="id1">
|
||
|
direct internal
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _ztarget:
|
||
|
|
||
|
`indirect internal`__
|
||
|
|
||
|
__ ztarget_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target refid="ztarget">
|
||
|
<paragraph ids="ztarget" names="ztarget">
|
||
|
<reference anonymous="1" name="indirect internal" refid="ztarget">
|
||
|
indirect internal
|
||
|
<target anonymous="1" ids="id1" refid="ztarget">
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _ztarget:
|
||
|
|
||
|
First
|
||
|
|
||
|
.. _ztarget:
|
||
|
|
||
|
Second
|
||
|
|
||
|
`indirect internal`__
|
||
|
|
||
|
__ ztarget_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target dupnames="ztarget" refid="ztarget">
|
||
|
<paragraph ids="ztarget">
|
||
|
First
|
||
|
<system_message backrefs="id1" level="2" line="5" source="test data" type="WARNING">
|
||
|
<paragraph>
|
||
|
Duplicate explicit target name: "ztarget".
|
||
|
<target dupnames="ztarget" refid="id1">
|
||
|
<paragraph ids="id1">
|
||
|
Second
|
||
|
<paragraph>
|
||
|
<problematic ids="id4" refid="id3">
|
||
|
`indirect internal`__
|
||
|
<target anonymous="1" ids="id2" refname="ztarget">
|
||
|
<system_message backrefs="id4" ids="id3" level="3" line="11" source="test data" type="ERROR">
|
||
|
<paragraph>
|
||
|
Indirect hyperlink target (id="id2") refers to target "ztarget", which is a duplicate, and cannot be used as a unique reference.
|
||
|
"""],
|
||
|
["""\
|
||
|
The next anonymous hyperlink reference is parsed (and discarded) at
|
||
|
some point, but nonetheless anonymous hyperlink references and targets
|
||
|
match in this snippet.
|
||
|
|
||
|
.. |invalid| replace:: anonymous__
|
||
|
|
||
|
hyperlink__
|
||
|
|
||
|
__ URL
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
The next anonymous hyperlink reference is parsed (and discarded) at
|
||
|
some point, but nonetheless anonymous hyperlink references and targets
|
||
|
match in this snippet.
|
||
|
<system_message level="3" line="5" source="test data" type="ERROR">
|
||
|
<paragraph>
|
||
|
Substitution definition contains illegal element:
|
||
|
<literal_block xml:space="preserve">
|
||
|
<reference anonymous="1" name="anonymous">
|
||
|
anonymous
|
||
|
<literal_block xml:space="preserve">
|
||
|
.. |invalid| replace:: anonymous__
|
||
|
<paragraph>
|
||
|
<reference anonymous="1" name="hyperlink" refuri="URL">
|
||
|
hyperlink
|
||
|
<target anonymous="1" ids="id1" refuri="URL">
|
||
|
"""],
|
||
|
["""\
|
||
|
An `embedded uri <http://direct>`_.
|
||
|
|
||
|
Another reference to the same `embedded URI`_.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
An \n\
|
||
|
<reference name="embedded uri" refuri="http://direct">
|
||
|
embedded uri
|
||
|
<target ids="embedded-uri" names="embedded\ uri" refuri="http://direct">
|
||
|
.
|
||
|
<paragraph>
|
||
|
Another reference to the same \n\
|
||
|
<reference name="embedded URI" refuri="http://direct">
|
||
|
embedded URI
|
||
|
.
|
||
|
"""],
|
||
|
["""\
|
||
|
An `anonymous embedded uri <http://direct>`__.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
An \n\
|
||
|
<reference name="anonymous embedded uri" refuri="http://direct">
|
||
|
anonymous embedded uri
|
||
|
.
|
||
|
"""],
|
||
|
["""\
|
||
|
An `embedded alias <alias_>`_.
|
||
|
|
||
|
Another reference to the same `embedded alias`_.
|
||
|
|
||
|
.. _alias: ham.py
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
An \n\
|
||
|
<reference name="embedded alias" refuri="ham.py">
|
||
|
embedded alias
|
||
|
<target names="embedded\ alias" refuri="ham.py">
|
||
|
.
|
||
|
<paragraph>
|
||
|
Another reference to the same \n\
|
||
|
<reference name="embedded alias" refuri="ham.py">
|
||
|
embedded alias
|
||
|
.
|
||
|
<target ids="alias" names="alias" refuri="ham.py">
|
||
|
"""],
|
||
|
["""\
|
||
|
An `anonymous embedded alias <redirect_>`__.
|
||
|
|
||
|
.. _redirect: spam.py
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
An \n\
|
||
|
<reference name="anonymous embedded alias" refuri="spam.py">
|
||
|
anonymous embedded alias
|
||
|
.
|
||
|
<target ids="redirect" names="redirect" refuri="spam.py">
|
||
|
"""],
|
||
|
["""\
|
||
|
An `embedded alias <alias_>`_ with unknown reference.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
An \n\
|
||
|
<problematic ids="id3" refid="id2">
|
||
|
`embedded alias <alias_>`_
|
||
|
<target names="embedded\ alias" refname="alias">
|
||
|
with unknown reference.
|
||
|
<system_message ids="id1" level="3" line="1" source="test data" type="ERROR">
|
||
|
<paragraph>
|
||
|
Indirect hyperlink target "embedded alias" refers to target "alias", which does not exist.
|
||
|
<system_message backrefs="id3" ids="id2" level="3" line="1" source="test data" type="ERROR">
|
||
|
<paragraph>
|
||
|
Unknown target name: "alias".
|
||
|
<system_message level="1" line="1" source="test data" type="INFO">
|
||
|
<paragraph>
|
||
|
Hyperlink target "embedded alias" is not referenced.\
|
||
|
"""],
|
||
|
["""\
|
||
|
An embedded URI with trailing underline:
|
||
|
`__init__ <http:example.py.html#__init__>`__.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
An embedded URI with trailing underline:
|
||
|
<reference name="__init__" refuri="http:example.py.html#__init__">
|
||
|
__init__
|
||
|
.
|
||
|
"""],
|
||
|
["""\
|
||
|
Hyperlinks with angle-bracketed text need escaping.
|
||
|
|
||
|
See `Element \<a>`_, `Element <b\>`_, and `Element <c>\ `_.
|
||
|
|
||
|
.. _`Element <a>`:
|
||
|
.. _`Element <b>`:
|
||
|
.. _`Element <c>`: elements.txt
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
Hyperlinks with angle-bracketed text need escaping.
|
||
|
<paragraph>
|
||
|
See \n\
|
||
|
<reference name="Element <a>" refuri="elements.txt">
|
||
|
Element <a>
|
||
|
, \n\
|
||
|
<reference name="Element <b>" refuri="elements.txt">
|
||
|
Element <b>
|
||
|
, and \n\
|
||
|
<reference name="Element <c>" refuri="elements.txt">
|
||
|
Element <c>
|
||
|
.
|
||
|
<target refid="element-a">
|
||
|
<target refid="element-b">
|
||
|
<target ids="element-c element-b element-a" names="element\ <c> element\ <b> element\ <a>" refuri="elements.txt">
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _target:
|
||
|
|
||
|
.. [1] Footnote; target_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target ids="target" names="target">
|
||
|
<footnote ids="id1" names="1">
|
||
|
<label>
|
||
|
1
|
||
|
<paragraph>
|
||
|
Footnote; \n\
|
||
|
<reference name="target" refid="target">
|
||
|
target
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _target:
|
||
|
|
||
|
.. [cit] Citation; target_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target ids="target" names="target">
|
||
|
<citation ids="cit" names="cit">
|
||
|
<label>
|
||
|
cit
|
||
|
<paragraph>
|
||
|
Citation; \n\
|
||
|
<reference name="target" refid="target">
|
||
|
target
|
||
|
"""],
|
||
|
])
|
||
|
|
||
|
totest['hyperlinks'] = ((PropagateTargets, AnonymousHyperlinks,
|
||
|
IndirectHyperlinks, ExternalTargets,
|
||
|
InternalTargets, DanglingReferences), [
|
||
|
["""\
|
||
|
.. _internal hyperlink:
|
||
|
|
||
|
This paragraph referenced.
|
||
|
|
||
|
By this `internal hyperlink`_ reference.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target refid="internal-hyperlink">
|
||
|
<paragraph ids="internal-hyperlink" names="internal\ hyperlink">
|
||
|
This paragraph referenced.
|
||
|
<paragraph>
|
||
|
By this \n\
|
||
|
<reference name="internal hyperlink" refid="internal-hyperlink">
|
||
|
internal hyperlink
|
||
|
reference.
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _chained:
|
||
|
.. _internal hyperlink:
|
||
|
|
||
|
This paragraph referenced.
|
||
|
|
||
|
By this `internal hyperlink`_ reference
|
||
|
as well as by this chained_ reference.
|
||
|
|
||
|
The results of the transform are not visible at the XML level.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target refid="chained">
|
||
|
<target refid="internal-hyperlink">
|
||
|
<paragraph ids="internal-hyperlink chained" names="internal\ hyperlink chained">
|
||
|
This paragraph referenced.
|
||
|
<paragraph>
|
||
|
By this \n\
|
||
|
<reference name="internal hyperlink" refid="internal-hyperlink">
|
||
|
internal hyperlink
|
||
|
reference
|
||
|
as well as by this \n\
|
||
|
<reference name="chained" refid="chained">
|
||
|
chained
|
||
|
reference.
|
||
|
<paragraph>
|
||
|
The results of the transform are not visible at the XML level.
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _chained:
|
||
|
__ http://anonymous
|
||
|
|
||
|
Anonymous__ and chained_ both refer to the same URI.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target refid="chained">
|
||
|
<target anonymous="1" ids="id1 chained" names="chained" refuri="http://anonymous">
|
||
|
<paragraph>
|
||
|
<reference anonymous="1" name="Anonymous" refuri="http://anonymous">
|
||
|
Anonymous
|
||
|
and \n\
|
||
|
<reference name="chained" refuri="http://anonymous">
|
||
|
chained
|
||
|
both refer to the same URI.
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _a:
|
||
|
.. _b:
|
||
|
|
||
|
x
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target refid="a">
|
||
|
<target refid="b">
|
||
|
<paragraph ids="b a" names="b a">
|
||
|
x
|
||
|
<system_message level="1" line="1" source="test data" type="INFO">
|
||
|
<paragraph>
|
||
|
Hyperlink target "a" is not referenced.
|
||
|
<system_message level="1" line="2" source="test data" type="INFO">
|
||
|
<paragraph>
|
||
|
Hyperlink target "b" is not referenced.
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _a:
|
||
|
.. _b:
|
||
|
|
||
|
a_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target refid="a">
|
||
|
<target refid="b">
|
||
|
<paragraph ids="b a" names="b a">
|
||
|
<reference name="a" refid="a">
|
||
|
a
|
||
|
<system_message level="1" line="2" source="test data" type="INFO">
|
||
|
<paragraph>
|
||
|
Hyperlink target "b" is not referenced.
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _a:
|
||
|
.. _b:
|
||
|
|
||
|
b_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target refid="a">
|
||
|
<target refid="b">
|
||
|
<paragraph ids="b a" names="b a">
|
||
|
<reference name="b" refid="b">
|
||
|
b
|
||
|
<system_message level="1" line="1" source="test data" type="INFO">
|
||
|
<paragraph>
|
||
|
Hyperlink target "a" is not referenced.
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _a:
|
||
|
.. _b:
|
||
|
|
||
|
a_\ b_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target refid="a">
|
||
|
<target refid="b">
|
||
|
<paragraph ids="b a" names="b a">
|
||
|
<reference name="a" refid="a">
|
||
|
a
|
||
|
<reference name="b" refid="b">
|
||
|
b
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _external hyperlink: http://uri
|
||
|
|
||
|
`External hyperlink`_ reference.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target ids="external-hyperlink" names="external\ hyperlink" refuri="http://uri">
|
||
|
<paragraph>
|
||
|
<reference name="External hyperlink" refuri="http://uri">
|
||
|
External hyperlink
|
||
|
reference.
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _external hyperlink: http://uri
|
||
|
.. _indirect target: `external hyperlink`_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target ids="external-hyperlink" names="external\ hyperlink" refuri="http://uri">
|
||
|
<target ids="indirect-target" names="indirect\ target" refuri="http://uri">
|
||
|
<system_message level="1" line="2" source="test data" type="INFO">
|
||
|
<paragraph>
|
||
|
Hyperlink target "indirect target" is not referenced.
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _chained:
|
||
|
.. _external hyperlink: http://uri
|
||
|
|
||
|
`External hyperlink`_ reference
|
||
|
and a chained_ reference too.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target refid="chained">
|
||
|
<target ids="external-hyperlink chained" names="external\ hyperlink chained" refuri="http://uri">
|
||
|
<paragraph>
|
||
|
<reference name="External hyperlink" refuri="http://uri">
|
||
|
External hyperlink
|
||
|
reference
|
||
|
and a \n\
|
||
|
<reference name="chained" refuri="http://uri">
|
||
|
chained
|
||
|
reference too.
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _external hyperlink: http://uri
|
||
|
.. _indirect hyperlink: `external hyperlink`_
|
||
|
|
||
|
`Indirect hyperlink`_ reference.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target ids="external-hyperlink" names="external\ hyperlink" refuri="http://uri">
|
||
|
<target ids="indirect-hyperlink" names="indirect\ hyperlink" refuri="http://uri">
|
||
|
<paragraph>
|
||
|
<reference name="Indirect hyperlink" refuri="http://uri">
|
||
|
Indirect hyperlink
|
||
|
reference.
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _external hyperlink: http://uri
|
||
|
.. _chained:
|
||
|
.. _indirect hyperlink: `external hyperlink`_
|
||
|
|
||
|
Chained_ `indirect hyperlink`_ reference.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target ids="external-hyperlink" names="external\ hyperlink" refuri="http://uri">
|
||
|
<target refuri="http://uri">
|
||
|
<target ids="indirect-hyperlink chained" names="indirect\ hyperlink chained" refuri="http://uri">
|
||
|
<paragraph>
|
||
|
<reference name="Chained" refuri="http://uri">
|
||
|
Chained
|
||
|
\n\
|
||
|
<reference name="indirect hyperlink" refuri="http://uri">
|
||
|
indirect hyperlink
|
||
|
reference.
|
||
|
"""],
|
||
|
["""\
|
||
|
.. __: http://full
|
||
|
__
|
||
|
__ http://simplified
|
||
|
.. _external: http://indirect.external
|
||
|
__ external_
|
||
|
__
|
||
|
|
||
|
`Full syntax anonymous external hyperlink reference`__,
|
||
|
`chained anonymous external reference`__,
|
||
|
`simplified syntax anonymous external hyperlink reference`__,
|
||
|
`indirect anonymous hyperlink reference`__,
|
||
|
`internal anonymous hyperlink reference`__.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target anonymous="1" ids="id1" refuri="http://full">
|
||
|
<target anonymous="1" refid="id2">
|
||
|
<target anonymous="1" ids="id3 id2" refuri="http://simplified">
|
||
|
<target ids="external" names="external" refuri="http://indirect.external">
|
||
|
<target anonymous="1" ids="id4" refuri="http://indirect.external">
|
||
|
<target anonymous="1" refid="id5">
|
||
|
<paragraph ids="id5">
|
||
|
<reference anonymous="1" name="Full syntax anonymous external hyperlink reference" refuri="http://full">
|
||
|
Full syntax anonymous external hyperlink reference
|
||
|
,
|
||
|
<reference anonymous="1" name="chained anonymous external reference" refuri="http://simplified">
|
||
|
chained anonymous external reference
|
||
|
,
|
||
|
<reference anonymous="1" name="simplified syntax anonymous external hyperlink reference" refuri="http://simplified">
|
||
|
simplified syntax anonymous external hyperlink reference
|
||
|
,
|
||
|
<reference anonymous="1" name="indirect anonymous hyperlink reference" refuri="http://indirect.external">
|
||
|
indirect anonymous hyperlink reference
|
||
|
,
|
||
|
<reference anonymous="1" name="internal anonymous hyperlink reference" refid="id5">
|
||
|
internal anonymous hyperlink reference
|
||
|
.
|
||
|
"""],
|
||
|
["""\
|
||
|
Duplicate external target_'s (different URIs):
|
||
|
|
||
|
.. _target: first
|
||
|
|
||
|
.. _target: second
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
Duplicate external \n\
|
||
|
<problematic ids="id3" refid="id2">
|
||
|
target_
|
||
|
's (different URIs):
|
||
|
<target dupnames="target" ids="target" refuri="first">
|
||
|
<system_message backrefs="id1" level="2" line="5" source="test data" type="WARNING">
|
||
|
<paragraph>
|
||
|
Duplicate explicit target name: "target".
|
||
|
<target dupnames="target" ids="id1" refuri="second">
|
||
|
<system_message backrefs="id3" ids="id2" level="3" line="1" source="test data" type="ERROR">
|
||
|
<paragraph>
|
||
|
Duplicate target name, cannot be used as a unique reference: "target".
|
||
|
"""],
|
||
|
["""\
|
||
|
Duplicate external targets (different URIs) without reference:
|
||
|
|
||
|
.. _target: first
|
||
|
|
||
|
.. _target: second
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
Duplicate external targets (different URIs) without reference:
|
||
|
<target dupnames="target" ids="target" refuri="first">
|
||
|
<system_message backrefs="id1" level="2" line="5" source="test data" type="WARNING">
|
||
|
<paragraph>
|
||
|
Duplicate explicit target name: "target".
|
||
|
<target dupnames="target" ids="id1" refuri="second">
|
||
|
"""],
|
||
|
["""\
|
||
|
Several__ anonymous__ hyperlinks__, but not enough targets.
|
||
|
|
||
|
__ http://example.org
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
<problematic ids="id3" refid="id2">
|
||
|
Several__
|
||
|
\n\
|
||
|
<problematic ids="id4" refid="id2">
|
||
|
anonymous__
|
||
|
\n\
|
||
|
<problematic ids="id5" refid="id2">
|
||
|
hyperlinks__
|
||
|
, but not enough targets.
|
||
|
<target anonymous="1" ids="id1" refuri="http://example.org">
|
||
|
<system_message backrefs="id3 id4 id5" ids="id2" level="3" source="test data" type="ERROR">
|
||
|
<paragraph>
|
||
|
Anonymous hyperlink mismatch: 3 references but 1 targets.
|
||
|
See "backrefs" attribute for IDs.
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _external: http://uri
|
||
|
.. _indirect: external_
|
||
|
.. _internal:
|
||
|
|
||
|
.. image:: picture.png
|
||
|
:target: external_
|
||
|
|
||
|
.. image:: picture.png
|
||
|
:target: indirect_
|
||
|
|
||
|
.. image:: picture.png
|
||
|
:target: internal_
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target ids="external" names="external" refuri="http://uri">
|
||
|
<target ids="indirect" names="indirect" refuri="http://uri">
|
||
|
<target refid="internal">
|
||
|
<reference ids="internal" name="external" names="internal" refuri="http://uri">
|
||
|
<image uri="picture.png">
|
||
|
<reference name="indirect" refuri="http://uri">
|
||
|
<image uri="picture.png">
|
||
|
<reference name="internal" refid="internal">
|
||
|
<image uri="picture.png">
|
||
|
"""],
|
||
|
["""\
|
||
|
.. contents:: Table of Contents
|
||
|
.. _indirect reference to the table of contents: `table of contents`_
|
||
|
|
||
|
Section
|
||
|
=======
|
||
|
|
||
|
Testing an `indirect reference to the table of contents`_.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<topic classes="contents" ids="table-of-contents" names="table\ of\ contents">
|
||
|
<title>
|
||
|
Table of Contents
|
||
|
<bullet_list>
|
||
|
<list_item>
|
||
|
<paragraph>
|
||
|
<reference ids="id1" refid="section">
|
||
|
Section
|
||
|
<target ids="indirect-reference-to-the-table-of-contents" names="indirect\ reference\ to\ the\ table\ of\ contents" refid="table-of-contents">
|
||
|
<section ids="section" names="section">
|
||
|
<title refid="id1">
|
||
|
Section
|
||
|
<paragraph>
|
||
|
Testing an
|
||
|
<reference name="indirect reference to the table of contents" refid="table-of-contents">
|
||
|
indirect reference to the table of contents
|
||
|
.
|
||
|
"""],
|
||
|
["""\
|
||
|
.. _explicit target:
|
||
|
|
||
|
Title
|
||
|
-----
|
||
|
|
||
|
Let's reference it (`explicit target`_) to avoid an irrelevant error.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<target refid="explicit-target">
|
||
|
<section ids="title explicit-target" names="title explicit\ target">
|
||
|
<title>
|
||
|
Title
|
||
|
<paragraph>
|
||
|
Let's reference it (
|
||
|
<reference name="explicit target" refid="explicit-target">
|
||
|
explicit target
|
||
|
) to avoid an irrelevant error.
|
||
|
"""],
|
||
|
["""\
|
||
|
target1_ should refer to target2_, not the Title.
|
||
|
|
||
|
.. _target1:
|
||
|
.. _target2: URI
|
||
|
|
||
|
Title
|
||
|
=====
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
<reference name="target1" refuri="URI">
|
||
|
target1
|
||
|
should refer to \n\
|
||
|
<reference name="target2" refuri="URI">
|
||
|
target2
|
||
|
, not the Title.
|
||
|
<target refid="target1">
|
||
|
<target ids="target2 target1" names="target2 target1" refuri="URI">
|
||
|
<section ids="title" names="title">
|
||
|
<title>
|
||
|
Title
|
||
|
"""],
|
||
|
["""\
|
||
|
Unknown reference_.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
Unknown \n\
|
||
|
<problematic ids="id2" refid="id1">
|
||
|
reference_
|
||
|
.
|
||
|
<system_message backrefs="id2" ids="id1" level="3" line="1" source="test data" type="ERROR">
|
||
|
<paragraph>
|
||
|
Unknown target name: "reference".
|
||
|
"""],
|
||
|
["""\
|
||
|
Duplicate manual footnote labels, with reference ([1]_):
|
||
|
|
||
|
.. [1] Footnote.
|
||
|
|
||
|
.. [1] Footnote.
|
||
|
""",
|
||
|
"""\
|
||
|
<document source="test data">
|
||
|
<paragraph>
|
||
|
Duplicate manual footnote labels, with reference (
|
||
|
<problematic ids="id1" refid="id4">
|
||
|
[1]_
|
||
|
):
|
||
|
<footnote dupnames="1" ids="id2">
|
||
|
<label>
|
||
|
1
|
||
|
<paragraph>
|
||
|
Footnote.
|
||
|
<footnote dupnames="1" ids="id3">
|
||
|
<label>
|
||
|
1
|
||
|
<system_message backrefs="id3" level="2" line="5" source="test data" type="WARNING">
|
||
|
<paragraph>
|
||
|
Duplicate explicit target name: "1".
|
||
|
<paragraph>
|
||
|
Footnote.
|
||
|
<system_message backrefs="id1" ids="id4" level="3" line="1" source="test data" type="ERROR">
|
||
|
<paragraph>
|
||
|
Duplicate target name, cannot be used as a unique reference: "1".
|
||
|
"""],
|
||
|
])
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
import unittest
|
||
|
unittest.main(defaultTest='suite')
|