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.
537 lines
14 KiB
537 lines
14 KiB
#! /usr/bin/env python |
|
|
|
# $Id: test_targets.py 7998 2016-12-16 03:45:07Z goodger $ |
|
# Author: David Goodger <goodger@python.org> |
|
# Copyright: This module has been placed in the public domain. |
|
|
|
""" |
|
Tests for states.py. |
|
""" |
|
|
|
from __init__ import DocutilsTestSupport |
|
|
|
def suite(): |
|
s = DocutilsTestSupport.ParserTestSuite() |
|
s.generateTests(totest) |
|
return s |
|
|
|
totest = {} |
|
|
|
totest['targets'] = [ |
|
["""\ |
|
.. _target: |
|
|
|
(Internal hyperlink target.) |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<target ids="target" names="target"> |
|
<paragraph> |
|
(Internal hyperlink target.) |
|
"""], |
|
["""\ |
|
.. _optional space before colon : |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<target ids="optional-space-before-colon" names="optional\ space\ before\ colon"> |
|
"""], |
|
[r""" |
|
External hyperlink targets: |
|
|
|
.. _one-liner: http://structuredtext.sourceforge.net |
|
|
|
.. _starts-on-this-line: http:// |
|
structuredtext. |
|
sourceforge.net |
|
|
|
.. _entirely-below: |
|
http://structuredtext. |
|
sourceforge.net |
|
|
|
.. _escaped-whitespace: http://example.org/a\ path\ with\ |
|
spaces.html |
|
|
|
.. _not-indirect: uri\_ |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
External hyperlink targets: |
|
<target ids="one-liner" names="one-liner" refuri="http://structuredtext.sourceforge.net"> |
|
<target ids="starts-on-this-line" names="starts-on-this-line" refuri="http://structuredtext.sourceforge.net"> |
|
<target ids="entirely-below" names="entirely-below" refuri="http://structuredtext.sourceforge.net"> |
|
<target ids="escaped-whitespace" names="escaped-whitespace" refuri="http://example.org/a path with spaces.html"> |
|
<target ids="not-indirect" names="not-indirect" refuri="uri_"> |
|
"""], |
|
["""\ |
|
Indirect hyperlink targets: |
|
|
|
.. _target1: reference_ |
|
|
|
.. _target2: `phrase-link reference`_ |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Indirect hyperlink targets: |
|
<target ids="target1" names="target1" refname="reference"> |
|
<target ids="target2" names="target2" refname="phrase-link reference"> |
|
"""], |
|
["""\ |
|
.. _a long target name: |
|
|
|
.. _`a target name: including a colon (quoted)`: |
|
|
|
.. _a target name\: including a colon (escaped): |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<target ids="a-long-target-name" names="a\ long\ target\ name"> |
|
<target ids="a-target-name-including-a-colon-quoted" names="a\ target\ name:\ including\ a\ colon\ (quoted)"> |
|
<target ids="a-target-name-including-a-colon-escaped" names="a\ target\ name:\ including\ a\ colon\ (escaped)"> |
|
"""], |
|
["""\ |
|
.. _`target: No matching backquote. |
|
.. _`: No matching backquote either. |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<comment xml:space="preserve"> |
|
_`target: No matching backquote. |
|
<system_message level="2" line="1" source="test data" type="WARNING"> |
|
<paragraph> |
|
malformed hyperlink target. |
|
<comment xml:space="preserve"> |
|
_`: No matching backquote either. |
|
<system_message level="2" line="2" source="test data" type="WARNING"> |
|
<paragraph> |
|
malformed hyperlink target. |
|
"""], |
|
["""\ |
|
.. _a very long target name, |
|
split across lines: |
|
.. _`and another, |
|
with backquotes`: |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<target ids="a-very-long-target-name-split-across-lines" names="a\ very\ long\ target\ name,\ split\ across\ lines"> |
|
<target ids="and-another-with-backquotes" names="and\ another,\ with\ backquotes"> |
|
"""], |
|
["""\ |
|
External hyperlink: |
|
|
|
.. _target: http://www.python.org/ |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
External hyperlink: |
|
<target ids="target" names="target" refuri="http://www.python.org/"> |
|
"""], |
|
["""\ |
|
.. _email: jdoe@example.com |
|
|
|
.. _multi-line email: jdoe |
|
@example.com |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<target ids="email" names="email" refuri="mailto:jdoe@example.com"> |
|
<target ids="multi-line-email" names="multi-line\ email" refuri="mailto:jdoe@example.com"> |
|
"""], |
|
["""\ |
|
Malformed target: |
|
|
|
.. __malformed: no good |
|
|
|
Target beginning with an underscore: |
|
|
|
.. _`_target`: OK |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Malformed target: |
|
<comment xml:space="preserve"> |
|
__malformed: no good |
|
<system_message level="2" line="3" source="test data" type="WARNING"> |
|
<paragraph> |
|
malformed hyperlink target. |
|
<paragraph> |
|
Target beginning with an underscore: |
|
<target ids="target" names="_target" refuri="OK"> |
|
"""], |
|
["""\ |
|
Duplicate external targets (different URIs): |
|
|
|
.. _target: first |
|
|
|
.. _target: second |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Duplicate external targets (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"> |
|
"""], |
|
["""\ |
|
Duplicate external targets (same URIs): |
|
|
|
.. _target: first |
|
|
|
.. _target: first |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Duplicate external targets (same URIs): |
|
<target ids="target" names="target" refuri="first"> |
|
<system_message backrefs="id1" level="1" line="5" source="test data" type="INFO"> |
|
<paragraph> |
|
Duplicate explicit target name: "target". |
|
<target dupnames="target" ids="id1" refuri="first"> |
|
"""], |
|
["""\ |
|
Duplicate implicit targets. |
|
|
|
Title |
|
===== |
|
|
|
Paragraph. |
|
|
|
Title |
|
===== |
|
|
|
Paragraph. |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Duplicate implicit targets. |
|
<section dupnames="title" ids="title"> |
|
<title> |
|
Title |
|
<paragraph> |
|
Paragraph. |
|
<section dupnames="title" ids="id1"> |
|
<title> |
|
Title |
|
<system_message backrefs="id1" level="1" line="9" source="test data" type="INFO"> |
|
<paragraph> |
|
Duplicate implicit target name: "title". |
|
<paragraph> |
|
Paragraph. |
|
"""], |
|
["""\ |
|
Duplicate implicit/explicit targets. |
|
|
|
Title |
|
===== |
|
|
|
.. _title: |
|
|
|
Paragraph. |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Duplicate implicit/explicit targets. |
|
<section dupnames="title" ids="title"> |
|
<title> |
|
Title |
|
<system_message backrefs="id1" level="1" line="6" source="test data" type="INFO"> |
|
<paragraph> |
|
Duplicate implicit target name: "title". |
|
<target ids="id1" names="title"> |
|
<paragraph> |
|
Paragraph. |
|
"""], |
|
["""\ |
|
Duplicate implicit/directive targets. |
|
|
|
Title |
|
===== |
|
|
|
.. target-notes:: |
|
:name: title |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Duplicate implicit/directive targets. |
|
<section dupnames="title" ids="title"> |
|
<title> |
|
Title |
|
<pending ids="id1" names="title"> |
|
<system_message backrefs="id1" level="1" line="4" source="test data" type="INFO"> |
|
<paragraph> |
|
Duplicate implicit target name: "title". |
|
.. internal attributes: |
|
.transform: docutils.transforms.references.TargetNotes |
|
.details: |
|
"""], |
|
["""\ |
|
Duplicate explicit targets. |
|
|
|
.. _title: |
|
|
|
First. |
|
|
|
.. _title: |
|
|
|
Second. |
|
|
|
.. _title: |
|
|
|
Third. |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Duplicate explicit targets. |
|
<target dupnames="title" ids="title"> |
|
<paragraph> |
|
First. |
|
<system_message backrefs="id1" level="2" line="7" source="test data" type="WARNING"> |
|
<paragraph> |
|
Duplicate explicit target name: "title". |
|
<target dupnames="title" ids="id1"> |
|
<paragraph> |
|
Second. |
|
<system_message backrefs="id2" level="2" line="11" source="test data" type="WARNING"> |
|
<paragraph> |
|
Duplicate explicit target name: "title". |
|
<target dupnames="title" ids="id2"> |
|
<paragraph> |
|
Third. |
|
"""], |
|
["""\ |
|
Duplicate explicit/directive targets. |
|
|
|
.. _title: |
|
|
|
First. |
|
|
|
.. rubric:: this is a title too |
|
:name: title |
|
|
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Duplicate explicit/directive targets. |
|
<target dupnames="title" ids="title"> |
|
<paragraph> |
|
First. |
|
<rubric dupnames="title" ids="id1"> |
|
this is a title too |
|
<system_message backrefs="id1" level="2" line="9" source="test data" type="WARNING"> |
|
<paragraph> |
|
Duplicate explicit target name: "title". |
|
"""], |
|
["""\ |
|
Duplicate targets: |
|
|
|
Target |
|
====== |
|
|
|
Implicit section header target. |
|
|
|
.. [TARGET] Citation target. |
|
|
|
.. [#target] Autonumber-labeled footnote target. |
|
|
|
.. _target: |
|
|
|
Explicit internal target. |
|
|
|
.. _target: Explicit_external_target |
|
|
|
.. rubric:: directive with target |
|
:name: Target |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Duplicate targets: |
|
<section dupnames="target" ids="target"> |
|
<title> |
|
Target |
|
<paragraph> |
|
Implicit section header target. |
|
<citation dupnames="target" ids="id1"> |
|
<label> |
|
TARGET |
|
<system_message backrefs="id1" level="1" line="8" source="test data" type="INFO"> |
|
<paragraph> |
|
Duplicate implicit target name: "target". |
|
<paragraph> |
|
Citation target. |
|
<footnote auto="1" dupnames="target" ids="id2"> |
|
<system_message backrefs="id2" level="2" line="10" source="test data" type="WARNING"> |
|
<paragraph> |
|
Duplicate explicit target name: "target". |
|
<paragraph> |
|
Autonumber-labeled footnote target. |
|
<system_message backrefs="id3" level="2" line="12" source="test data" type="WARNING"> |
|
<paragraph> |
|
Duplicate explicit target name: "target". |
|
<target dupnames="target" ids="id3"> |
|
<paragraph> |
|
Explicit internal target. |
|
<system_message backrefs="id4" level="2" line="16" source="test data" type="WARNING"> |
|
<paragraph> |
|
Duplicate explicit target name: "target". |
|
<target dupnames="target" ids="id4" refuri="Explicit_external_target"> |
|
<rubric dupnames="target" ids="id5"> |
|
directive with target |
|
<system_message backrefs="id5" level="2" line="4" source="test data" type="WARNING"> |
|
<paragraph> |
|
Duplicate explicit target name: "target". |
|
"""], |
|
["""\ |
|
.. _unescaped colon at end:: no good |
|
|
|
.. _:: no good either |
|
|
|
.. _escaped colon\:: OK |
|
|
|
.. _`unescaped colon, quoted:`: OK |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<comment xml:space="preserve"> |
|
_unescaped colon at end:: no good |
|
<system_message level="2" line="1" source="test data" type="WARNING"> |
|
<paragraph> |
|
malformed hyperlink target. |
|
<comment xml:space="preserve"> |
|
_:: no good either |
|
<system_message level="2" line="3" source="test data" type="WARNING"> |
|
<paragraph> |
|
malformed hyperlink target. |
|
<target ids="escaped-colon" names="escaped\ colon:" refuri="OK"> |
|
<target ids="unescaped-colon-quoted" names="unescaped\ colon,\ quoted:" refuri="OK"> |
|
"""], |
|
] |
|
|
|
totest['anonymous_targets'] = [ |
|
["""\ |
|
Anonymous external hyperlink target: |
|
|
|
.. __: http://w3c.org/ |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Anonymous external hyperlink target: |
|
<target anonymous="1" ids="id1" refuri="http://w3c.org/"> |
|
"""], |
|
["""\ |
|
Anonymous external hyperlink target: |
|
|
|
__ http://w3c.org/ |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Anonymous external hyperlink target: |
|
<target anonymous="1" ids="id1" refuri="http://w3c.org/"> |
|
"""], |
|
["""\ |
|
Anonymous indirect hyperlink target: |
|
|
|
.. __: reference_ |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Anonymous indirect hyperlink target: |
|
<target anonymous="1" ids="id1" refname="reference"> |
|
"""], |
|
["""\ |
|
Anonymous external hyperlink target, not indirect: |
|
|
|
__ uri\\_ |
|
|
|
__ this URI ends with an underscore_ |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Anonymous external hyperlink target, not indirect: |
|
<target anonymous="1" ids="id1" refuri="uri_"> |
|
<target anonymous="1" ids="id2" refuri="thisURIendswithanunderscore_"> |
|
"""], |
|
["""\ |
|
Anonymous indirect hyperlink targets: |
|
|
|
__ reference_ |
|
__ `a very long |
|
reference`_ |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Anonymous indirect hyperlink targets: |
|
<target anonymous="1" ids="id1" refname="reference"> |
|
<target anonymous="1" ids="id2" refname="a very long reference"> |
|
"""], |
|
["""\ |
|
Mixed anonymous & named indirect hyperlink targets: |
|
|
|
__ reference_ |
|
.. __: reference_ |
|
__ reference_ |
|
.. _target1: reference_ |
|
no blank line |
|
|
|
.. _target2: reference_ |
|
__ reference_ |
|
.. __: reference_ |
|
__ reference_ |
|
no blank line |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Mixed anonymous & named indirect hyperlink targets: |
|
<target anonymous="1" ids="id1" refname="reference"> |
|
<target anonymous="1" ids="id2" refname="reference"> |
|
<target anonymous="1" ids="id3" refname="reference"> |
|
<target ids="target1" names="target1" refname="reference"> |
|
<system_message level="2" line="7" source="test data" type="WARNING"> |
|
<paragraph> |
|
Explicit markup ends without a blank line; unexpected unindent. |
|
<paragraph> |
|
no blank line |
|
<target ids="target2" names="target2" refname="reference"> |
|
<target anonymous="1" ids="id4" refname="reference"> |
|
<target anonymous="1" ids="id5" refname="reference"> |
|
<target anonymous="1" ids="id6" refname="reference"> |
|
<system_message level="2" line="13" source="test data" type="WARNING"> |
|
<paragraph> |
|
Explicit markup ends without a blank line; unexpected unindent. |
|
<paragraph> |
|
no blank line |
|
"""], |
|
["""\ |
|
.. _ |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<comment xml:space="preserve"> |
|
_ |
|
"""], |
|
] |
|
|
|
|
|
if __name__ == '__main__': |
|
import unittest |
|
unittest.main(defaultTest='suite')
|
|
|