#! /usr/bin/env python # $Id: test_role.py 6424 2010-09-18 10:43:52Z smerten $ # Author: David Goodger # Copyright: This module has been placed in the public domain. """ Tests for misc.py "role" directive. """ from .__init__ import DocutilsTestSupport def suite(): s = DocutilsTestSupport.ParserTestSuite() s.generateTests(totest) return s totest = {} totest['role'] = [ ["""\ .. role:: custom .. role:: special :custom:`interpreted` and :special:`interpreted` """, """\ interpreted and \n\ interpreted """], ["""\ .. role:: custom :class: custom-class .. role:: special :class: special-class :custom:`interpreted` and :special:`interpreted` """, """\ interpreted and \n\ interpreted """], ["""\ Must define :custom:`interpreted` before using it. .. role:: custom Now that it's defined, :custom:`interpreted` works. """, """\ Must define :custom:`interpreted` before using it. No role entry for "custom" in module "docutils.parsers.rst.languages.en". Trying "custom" as canonical role name. Unknown interpreted text role "custom". Now that it's defined, \n\ interpreted works. """], ["""\ .. role:: custom(emphasis) :custom:`text` """, """\ text """], ["""\ .. role:: custom ( emphasis ) :custom:`text` """, """\ text """], ["""\ .. role:: custom(emphasis) :class: special :custom:`text` """, """\ text """], ["""\ .. role:: custom(unknown-role) """, """\ No role entry for "unknown-role" in module "docutils.parsers.rst.languages.en". Trying "unknown-role" as canonical role name. Unknown interpreted text role "unknown-role". .. role:: custom(unknown-role) """], ["""\ .. role:: custom :class: 1 """, """\ Error in "role" directive: invalid option value: (option: "class"; value: '1') cannot make "1" into a class name. .. role:: custom :class: 1 """], ["""\ .. role:: 1 """, """\ Invalid argument for "role" directive: cannot make "1" into a class name. .. role:: 1 """], ["""\ .. role:: (error) """, """\ "role" directive arguments not valid role names: "(error)". .. role:: (error) """], ["""\ .. role:: """, """\ "role" directive requires arguments on the first line. .. role:: """], ["""\ Test ---- .. role:: fileref(emphasis) Testing a :fileref:`role` in a nested parse. """, """\
Test <paragraph> Testing a \n\ <emphasis classes="fileref"> role in a nested parse. """], ["""\ .. role:: custom .. role:: special Empty :custom:`\ ` and empty `\ `:special: """, """\ <document source="test data"> <paragraph> Empty <inline classes="custom"> and empty <inline classes="special"> """], ] totest['raw_role'] = [ ["""\ .. role:: html(raw) :format: html Here's some :html:`<i>raw HTML data</i>`. """, """\ <document source="test data"> <paragraph> Here's some \n\ <raw classes="html" format="html" xml:space="preserve"> <i>raw HTML data</i> . """], ["""\ .. role:: itex(raw) :format: latex html Here's some itex markup: :itex:`$x^\\infty$`. """, """\ <document source="test data"> <paragraph> Here's some itex markup: \n\ <raw classes="itex" format="latex html" xml:space="preserve"> $x^\\infty$ . """], ["""\ Can't use the :raw:`role` directly. """, """\ <document source="test data"> <paragraph> Can't use the \n\ <problematic ids="id2" refid="id1"> :raw:`role` directly. <system_message backrefs="id2" ids="id1" level="3" line="1" source="test data" type="ERROR"> <paragraph> No format (Writer name) is associated with this role: "raw". The "raw" role cannot be used directly. Instead, use the "role" directive to create a new role with an associated format. """], ] if __name__ == '__main__': import unittest unittest.main(defaultTest='suite')