#! /usr/bin/env python # $Id: test_raw.py 7384 2012-03-19 22:59:09Z milde $ # Author: David Goodger # Copyright: This module has been placed in the public domain. """ Tests for misc.py "raw" directive. """ import os.path import sys from .__init__ import DocutilsTestSupport from docutils._compat import b def suite(): s = DocutilsTestSupport.ParserTestSuite() s.generateTests(totest) return s mydir = 'test_parsers/test_rst/test_directives/' raw1 = os.path.join(mydir, 'raw1.txt') utf_16_file = os.path.join(mydir, 'utf-16.csv') utf_16_file_rel = DocutilsTestSupport.utils.relative_path(None, utf_16_file) utf_16_error_str = ("UnicodeDecodeError: 'ascii' codec can't decode byte 0xfe " "in position 0: ordinal not in range(128)") if sys.version_info < (3,0): utf_16_error_str = ("UnicodeError: Unable to decode input data. " "Tried the following encodings: 'ascii'.\n" " (%s)" % utf_16_error_str) totest = {} totest['raw'] = [ ["""\ .. raw:: html This is some plain old raw text. """, """\ This is some plain old raw text. """], ["""\ .. raw:: html :file: %s """ % raw1, """\

This file is used by test_raw.py.

""" % DocutilsTestSupport.utils.relative_path(None, raw1)], ["""\ .. raw:: html :file: rawfile.html :url: http://example.org/ """, """\ The "file" and "url" options may not be simultaneously specified for the "raw" directive. .. raw:: html :file: rawfile.html :url: http://example.org/ """], ["""\ .. raw:: html :file: rawfile.html

Can't have both content and file attribute.

""", """\ "raw" directive may not both specify an external file and have content. .. raw:: html :file: rawfile.html

Can't have both content and file attribute.

"""], [r""" .. raw:: latex html \[ \sum_{n=1}^\infty \frac{1}{n} \text{ etc.} \] """, """\ \\[ \\sum_{n=1}^\\infty \\frac{1}{n} \\text{ etc.} \\] """], ["""\ .. raw:: html :file: %s :encoding: utf-16 """ % utf_16_file_rel, b("""\ "Treat", "Quantity", "Description" "Albatr\xb0\xdf", 2.99, "\xa1On a \\u03c3\\u03c4\\u03b9\\u03ba!" "Crunchy Frog", 1.49, "If we took the b\xf6nes out, it wouldn\\u2019t be crunchy, now would it?" "Gannet Ripple", 1.99, "\xbfOn a \\u03c3\\u03c4\\u03b9\\u03ba?" """ % utf_16_file_rel).decode('raw_unicode_escape')], ["""\ Raw input file is UTF-16-encoded, and is not valid ASCII. .. raw:: html :file: %s :encoding: ascii """ % utf_16_file_rel, """\ Raw input file is UTF-16-encoded, and is not valid ASCII. Problem with "raw" directive: %s .. raw:: html :file: %s :encoding: ascii """ % (utf_16_error_str, utf_16_file_rel)], ["""\ .. raw:: html :encoding: utf-8 Should the parser complain becau\xdfe there is no :file:? BUG? """, """\ Should the parser complain becau\xdfe there is no :file:? BUG? """], ["""\ .. raw:: html """, """\ Content block expected for the "raw" directive; none found. .. raw:: html """], ["""\ .. raw:: html :file: non-existent.file """, """\ Problems with "raw" directive path: InputError: [Errno 2] No such file or directory: 'non-existent.file'. .. raw:: html :file: non-existent.file """], # note that this output is rewritten below for certain python versions ] if __name__ == '__main__': import unittest unittest.main(defaultTest='suite')