diff options
| author | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2023-02-06 21:04:00 +0000 |
|---|---|---|
| committer | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2023-02-06 21:04:00 +0000 |
| commit | cd03b1f0575deb1fa36a9cd07e2230b156a6c053 (patch) | |
| tree | 175c6fc1a165a924f6fad95fcac01ab1ccd37329 /docutils/test | |
| parent | 151057de56d9489200d06d939f7460c71ceab2f4 (diff) | |
| download | docutils-cd03b1f0575deb1fa36a9cd07e2230b156a6c053.tar.gz | |
New functions for use as `rst2*` "console_scripts entry points".
The new functions allow the installation of `rst2*` command line scripts
via standard `entry points`__ instead of the current "scripts" list in
``setup.py`` after a transition period (cf. [feature-requests:#88]).
+ Works also for Windows.
+ Allows shorter command names (drop the extension), already in use
in Debian and Ubuntu.
__ https://packaging.python.org/en/latest/specifications/entry-points/
git-svn-id: https://svn.code.sf.net/p/docutils/code/trunk@9325 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils/test')
| -rw-r--r-- | docutils/test/data/help/rst2html.txt | 211 | ||||
| -rw-r--r-- | docutils/test/data/help/rst2latex.txt | 253 | ||||
| -rw-r--r-- | docutils/test/test_CLI.py | 38 |
3 files changed, 495 insertions, 7 deletions
diff --git a/docutils/test/data/help/rst2html.txt b/docutils/test/data/help/rst2html.txt new file mode 100644 index 000000000..fc4975991 --- /dev/null +++ b/docutils/test/data/help/rst2html.txt @@ -0,0 +1,211 @@ +Usage +===== + rst2html [options] [<source> [<destination>]] + +Generate HTML documents from standalone reStructuredText sources +<https://docutils.sourceforge.io/docs/user/html.html#html>. Reads from +<source> (default is stdin) and writes to <destination> (default is stdout). +See https://docutils.sourceforge.io/docs/user/config.html for a detailed +settings reference. + +Options +======= +General Docutils Options +------------------------ +--title=TITLE Specify the document title as metadata. +--generator, -g Include a "Generated by Docutils" credit and link. +--no-generator Do not include a generator credit. +--date, -d Include the date at the end of the document (UTC). +--time, -t Include the time & date (UTC). +--no-datestamp Do not include a datestamp of any kind. +--source-link, -s Include a "View document source" link. +--source-url=<URL> Use <URL> for a source link; implies --source-link. +--no-source-link Do not include a "View document source" link. +--toc-entry-backlinks Link from section headers to TOC entries. (default) +--toc-top-backlinks Link from section headers to the top of the TOC. +--no-toc-backlinks Disable backlinks to the table of contents. +--footnote-backlinks Link from footnotes/citations to references. (default) +--no-footnote-backlinks + Disable backlinks from footnotes and citations. +--section-numbering Enable section numbering by Docutils. (default) +--no-section-numbering Disable section numbering by Docutils. +--strip-comments Remove comment elements from the document tree. +--leave-comments Leave comment elements in the document tree. (default) +--strip-elements-with-class=<class> + Remove all elements with classes="<class>" from the + document tree. Warning: potentially dangerous; use + with caution. (Multiple-use option.) +--strip-class=<class> Remove all classes="<class>" attributes from elements + in the document tree. Warning: potentially dangerous; + use with caution. (Multiple-use option.) +--report=<level>, -r <level> + Report system messages at or higher than <level>: + "info" or "1", "warning"/"2" (default), "error"/"3", + "severe"/"4", "none"/"5" +--verbose, -v Report all system messages. (Same as "--report=1".) +--quiet, -q Report no system messages. (Same as "--report=5".) +--halt=<level> Halt execution at system messages at or above <level>. + Levels as in --report. Default: 4 (severe). +--strict Halt at the slightest problem. Same as "--halt=info". +--exit-status=<level> Enable a non-zero exit status for non-halting system + messages at or above <level>. Default: 5 (disabled). +--debug Enable debug-level system messages and diagnostics. +--no-debug Disable debug output. (default) +--warnings=<file> Send the output of system messages to <file>. +--traceback Enable Python tracebacks when Docutils is halted. +--no-traceback Disable Python tracebacks. (default) +--input-encoding=<name[:handler]>, -i <name[:handler]> + Specify the encoding and optionally the error handler + of input text. Default: <auto-detect>:strict. +--input-encoding-error-handler=INPUT_ENCODING_ERROR_HANDLER + Specify the error handler for undecodable characters. + Choices: "strict" (default), "ignore", and "replace". +--output-encoding=<name[:handler]>, -o <name[:handler]> + Specify the text encoding and optionally the error + handler for output. Default: utf-8:strict. +--output-encoding-error-handler=OUTPUT_ENCODING_ERROR_HANDLER + Specify error handler for unencodable output + characters; "strict" (default), "ignore", "replace", + "xmlcharrefreplace", "backslashreplace". +--error-encoding=<name[:handler]>, -e <name[:handler]> + Specify text encoding and optionally error handler for + error output. Default: utf-8:backslashreplace. +--error-encoding-error-handler=ERROR_ENCODING_ERROR_HANDLER + Specify the error handler for unencodable characters + in error output. Default: backslashreplace. +--language=<name>, -l <name> + Specify the language (as BCP 47 language tag). + Default: en. +--record-dependencies=<file> + Write output file dependencies to <file>. +--config=<file> Read configuration settings from <file>, if it exists. +--version, -V Show this program's version number and exit. +--help, -h Show this help message and exit. + +Generic Parser Options +---------------------- +--no-file-insertion Disable directives that insert the contents of an + external file; replaced with a "warning" system + message. +--file-insertion-enabled + Enable directives that insert the contents of an + external file. (default) +--no-raw Disable the "raw" directive; replaced with a "warning" + system message. +--raw-enabled Enable the "raw" directive. (default) +--line-length-limit=<length> + Maximal number of characters in an input line. Default + 10 000. + +reStructuredText Parser Options +------------------------------- +--pep-references Recognize and link to standalone PEP references (like + "PEP 258"). +--pep-base-url=<URL> Base URL for PEP references (default + "https://peps.python.org/"). +--pep-file-url-template=<URL> + Template for PEP file part of URL. (default + "pep-%04d") +--rfc-references Recognize and link to standalone RFC references (like + "RFC 822"). +--rfc-base-url=<URL> Base URL for RFC references (default + "https://tools.ietf.org/html/"). +--tab-width=<width> Set number of spaces for tab expansion (default 8). +--trim-footnote-reference-space + Remove spaces before footnote references. +--leave-footnote-reference-space + Leave spaces before footnote references. +--syntax-highlight=<format> + Token name set for parsing code with Pygments: one of + "long", "short", or "none" (no parsing). Default is + "long". +--smart-quotes=<yes/no/alt> + Change straight quotation marks to typographic form: + one of "yes", "no", "alt[ernative]" (default "no"). +--smartquotes-locales=<language:quotes[,language:quotes,...]> + Characters to use as "smart quotes" for <language>. +--word-level-inline-markup + Inline markup recognized at word boundaries only + (adjacent to punctuation or whitespace). Force + character-level inline markup recognition with "\ " + (backslash + space). Default. +--character-level-inline-markup + Inline markup recognized anywhere, regardless of + surrounding characters. Backslash-escapes must be used + to avoid unwanted markup recognition. Useful for East + Asian languages. Experimental. + +Standalone Reader Options +------------------------- +--no-doc-title Disable the promotion of a lone top-level section + title to document title (and subsequent section title + to document subtitle promotion; enabled by default). +--no-doc-info Disable the bibliographic field list transform + (enabled by default). +--section-subtitles Activate the promotion of lone subsection titles to + section subtitles (disabled by default). +--no-section-subtitles Deactivate the promotion of lone subsection titles. + +HTML Writer Options +------------------- +--template=<file> Template file. (UTF-8 encoded, default: [...]) +--stylesheet=<URL[,URL,...]> + Comma separated list of stylesheet URLs. Overrides + previous --stylesheet and --stylesheet-path settings. +--stylesheet-path=<file[,file,...]> + Comma separated list of stylesheet paths. Relative + paths are expanded if a matching file is found in the + --stylesheet-dirs. With --link-stylesheet, the path is + rewritten relative to the output HTML file. (default: + "html4css1.css") +--stylesheet-dirs=<dir[,dir,...]> + Comma-separated list of directories where stylesheets + are found. Used by --stylesheet-path when expanding + relative path arguments. (default: [...]) +--embed-stylesheet Embed the stylesheet(s) in the output HTML file. The + stylesheet files must be accessible during processing. + (default) +--link-stylesheet Link to the stylesheet(s) in the output HTML file. +--initial-header-level=<level> + Specify the initial header level. Does not affect + document title & subtitle (see --no-doc-title). + (default: 1 for "<h1>") +--footnote-references=<format> + Format for footnote references: one of "superscript" + or "brackets". (default: "brackets") +--attribution=<format> Format for block quote attributions: one of "dash" + (em-dash prefix), "parentheses"/"parens", or "none". + (default: "dash") +--compact-lists Remove extra vertical whitespace between items of + "simple" bullet lists and enumerated lists. (default) +--no-compact-lists Disable compact simple bullet and enumerated lists. +--compact-field-lists Remove extra vertical whitespace between items of + simple field lists. (default) +--no-compact-field-lists + Disable compact simple field lists. +--table-style=TABLE_STYLE + Added to standard table classes. Defined styles: + borderless, booktabs, align-left, align-center, align- + right, colwidths-auto, colwidths-grid. +--math-output=MATH_OUTPUT + Math output format (one of "MathML", "HTML", + "MathJax", or "LaTeX") and option(s). (default: "HTML + math.css") +--xml-declaration Prepend an XML declaration (default). +--no-xml-declaration Omit the XML declaration. +--cloak-email-addresses + Obfuscate email addresses to confuse harvesters while + still keeping email links usable with standards- + compliant browsers. + +HTML4 Writer Options +-------------------- +--field-name-limit=<level> + Specify the maximum width (in characters) for one- + column field names. Longer field names will span an + entire row of the table used to render the field list. + Default is 14 characters. Use 0 for "no limit". +--option-limit=<level> Specify the maximum width (in characters) for options + in option lists. Longer options will span an entire + row of the table used to render the option list. + Default is 14 characters. Use 0 for "no limit". diff --git a/docutils/test/data/help/rst2latex.txt b/docutils/test/data/help/rst2latex.txt new file mode 100644 index 000000000..12ea0d40c --- /dev/null +++ b/docutils/test/data/help/rst2latex.txt @@ -0,0 +1,253 @@ +Usage +===== + rst2latex [options] [<source> [<destination>]] + +Generate LaTeX documents from standalone reStructuredText sources +<https://docutils.sourceforge.io/docs/user/latex.html>. Reads from <source> +(default is stdin) and writes to <destination> (default is stdout). See +https://docutils.sourceforge.io/docs/user/config.html for a detailed settings +reference. + +Options +======= +General Docutils Options +------------------------ +--title=TITLE Specify the document title as metadata. +--generator, -g Include a "Generated by Docutils" credit and link. +--no-generator Do not include a generator credit. +--date, -d Include the date at the end of the document (UTC). +--time, -t Include the time & date (UTC). +--no-datestamp Do not include a datestamp of any kind. +--source-link, -s Include a "View document source" link. +--source-url=<URL> Use <URL> for a source link; implies --source-link. +--no-source-link Do not include a "View document source" link. +--toc-entry-backlinks Link from section headers to TOC entries. (default) +--toc-top-backlinks Link from section headers to the top of the TOC. +--no-toc-backlinks Disable backlinks to the table of contents. +--footnote-backlinks Link from footnotes/citations to references. (default) +--no-footnote-backlinks + Disable backlinks from footnotes and citations. +--section-numbering Enable section numbering by Docutils. (default) +--no-section-numbering Disable section numbering by Docutils. +--strip-comments Remove comment elements from the document tree. +--leave-comments Leave comment elements in the document tree. (default) +--strip-elements-with-class=<class> + Remove all elements with classes="<class>" from the + document tree. Warning: potentially dangerous; use + with caution. (Multiple-use option.) +--strip-class=<class> Remove all classes="<class>" attributes from elements + in the document tree. Warning: potentially dangerous; + use with caution. (Multiple-use option.) +--report=<level>, -r <level> + Report system messages at or higher than <level>: + "info" or "1", "warning"/"2" (default), "error"/"3", + "severe"/"4", "none"/"5" +--verbose, -v Report all system messages. (Same as "--report=1".) +--quiet, -q Report no system messages. (Same as "--report=5".) +--halt=<level> Halt execution at system messages at or above <level>. + Levels as in --report. Default: 4 (severe). +--strict Halt at the slightest problem. Same as "--halt=info". +--exit-status=<level> Enable a non-zero exit status for non-halting system + messages at or above <level>. Default: 5 (disabled). +--debug Enable debug-level system messages and diagnostics. +--no-debug Disable debug output. (default) +--warnings=<file> Send the output of system messages to <file>. +--traceback Enable Python tracebacks when Docutils is halted. +--no-traceback Disable Python tracebacks. (default) +--input-encoding=<name[:handler]>, -i <name[:handler]> + Specify the encoding and optionally the error handler + of input text. Default: <auto-detect>:strict. +--input-encoding-error-handler=INPUT_ENCODING_ERROR_HANDLER + Specify the error handler for undecodable characters. + Choices: "strict" (default), "ignore", and "replace". +--output-encoding=<name[:handler]>, -o <name[:handler]> + Specify the text encoding and optionally the error + handler for output. Default: utf-8:strict. +--output-encoding-error-handler=OUTPUT_ENCODING_ERROR_HANDLER + Specify error handler for unencodable output + characters; "strict" (default), "ignore", "replace", + "xmlcharrefreplace", "backslashreplace". +--error-encoding=<name[:handler]>, -e <name[:handler]> + Specify text encoding and optionally error handler for + error output. Default: utf-8:backslashreplace. +--error-encoding-error-handler=ERROR_ENCODING_ERROR_HANDLER + Specify the error handler for unencodable characters + in error output. Default: backslashreplace. +--language=<name>, -l <name> + Specify the language (as BCP 47 language tag). + Default: en. +--record-dependencies=<file> + Write output file dependencies to <file>. +--config=<file> Read configuration settings from <file>, if it exists. +--version, -V Show this program's version number and exit. +--help, -h Show this help message and exit. + +Generic Parser Options +---------------------- +--no-file-insertion Disable directives that insert the contents of an + external file; replaced with a "warning" system + message. +--file-insertion-enabled + Enable directives that insert the contents of an + external file. (default) +--no-raw Disable the "raw" directive; replaced with a "warning" + system message. +--raw-enabled Enable the "raw" directive. (default) +--line-length-limit=<length> + Maximal number of characters in an input line. Default + 10 000. + +reStructuredText Parser Options +------------------------------- +--pep-references Recognize and link to standalone PEP references (like + "PEP 258"). +--pep-base-url=<URL> Base URL for PEP references (default + "https://peps.python.org/"). +--pep-file-url-template=<URL> + Template for PEP file part of URL. (default + "pep-%04d") +--rfc-references Recognize and link to standalone RFC references (like + "RFC 822"). +--rfc-base-url=<URL> Base URL for RFC references (default + "https://tools.ietf.org/html/"). +--tab-width=<width> Set number of spaces for tab expansion (default 8). +--trim-footnote-reference-space + Remove spaces before footnote references. +--leave-footnote-reference-space + Leave spaces before footnote references. +--syntax-highlight=<format> + Token name set for parsing code with Pygments: one of + "long", "short", or "none" (no parsing). Default is + "long". +--smart-quotes=<yes/no/alt> + Change straight quotation marks to typographic form: + one of "yes", "no", "alt[ernative]" (default "no"). +--smartquotes-locales=<language:quotes[,language:quotes,...]> + Characters to use as "smart quotes" for <language>. +--word-level-inline-markup + Inline markup recognized at word boundaries only + (adjacent to punctuation or whitespace). Force + character-level inline markup recognition with "\ " + (backslash + space). Default. +--character-level-inline-markup + Inline markup recognized anywhere, regardless of + surrounding characters. Backslash-escapes must be used + to avoid unwanted markup recognition. Useful for East + Asian languages. Experimental. + +Standalone Reader Options +------------------------- +--no-doc-title Disable the promotion of a lone top-level section + title to document title (and subsequent section title + to document subtitle promotion; enabled by default). +--no-doc-info Disable the bibliographic field list transform + (enabled by default). +--section-subtitles Activate the promotion of lone subsection titles to + section subtitles (disabled by default). +--no-section-subtitles Deactivate the promotion of lone subsection titles. + +LaTeX-Specific Options +---------------------- +--documentclass=DOCUMENTCLASS + Specify LaTeX documentclass. Default: "article". +--documentoptions=DOCUMENTOPTIONS + Specify document options. Multiple options can be + given, separated by commas. Default: "a4paper". +--footnote-references=<format> + Format for footnote references: one of "superscript" + or "brackets". Default: "superscript". +--use-latex-citations Use \cite command for citations. (future default) +--figure-citations Use figure floats for citations (might get mixed with + real figures). (provisional default) +--attribution=<format> Format for block quote attributions: one of "dash" + (em-dash prefix), "parentheses"/"parens", or "none". + Default: "dash". +--stylesheet=<file[,file,...]> + Specify LaTeX packages/stylesheets. A style is + referenced with "\usepackage" if extension is ".sty" + or omitted and with "\input" else. Overrides previous + --stylesheet and --stylesheet-path settings. +--stylesheet-path=<file[,file,...]> + Comma separated list of LaTeX packages/stylesheets. + Relative paths are expanded if a matching file is + found in the --stylesheet-dirs. With --link- + stylesheet, the path is rewritten relative to the + output *.tex file. +--link-stylesheet Link to the stylesheet(s) in the output file. + (default) +--embed-stylesheet Embed the stylesheet(s) in the output file. + Stylesheets must be accessible during processing. +--stylesheet-dirs=<dir[,dir,...]> + Comma-separated list of directories where stylesheets + are found. Used by --stylesheet-path when expanding + relative path arguments. Default: ".". +--latex-preamble=LATEX_PREAMBLE + Customization by LaTeX code in the preamble. Default: + select PDF standard fonts (Times, Helvetica, Courier). +--template=<file> Specify the template file. Default: "default.tex". +--use-latex-toc Table of contents by LaTeX. (default) +--use-docutils-toc Table of contents by Docutils (without page numbers). +--use-part-section Add parts on top of the section hierarchy. +--use-docutils-docinfo Attach author and date to the document info table. + (default) +--use-latex-docinfo Attach author and date to the document title. +--topic-abstract Typeset abstract as topic. (default) +--use-latex-abstract Use LaTeX abstract environment for the document's + abstract. +--hyperlink-color=HYPERLINK_COLOR + Color of any hyperlinks embedded in text. Default: + "blue" (use "false" to disable). +--hyperref-options=HYPERREF_OPTIONS + Additional options to the "hyperref" package. +--compound-enumerators Enable compound enumerators for nested enumerated + lists (e.g. "1.2.a.ii"). +--no-compound-enumerators + Disable compound enumerators for nested enumerated + lists. (default) +--section-prefix-for-enumerators + Enable section ("." subsection ...) prefixes for + compound enumerators. This has no effect without + --compound-enumerators. +--no-section-prefix-for-enumerators + Disable section prefixes for compound enumerators. + (default) +--section-enumerator-separator=<char> + Set the separator between section number and + enumerator for compound enumerated lists. Default: + "-". +--literal-block-env=LITERAL_BLOCK_ENV + When possible, use the specified environment for + literal-blocks. Default: "" (fall back to "alltt"). +--use-verbatim-when-possible + Deprecated alias for "--literal-block-env=verbatim". +--table-style=<format> Table style. "standard" with horizontal and vertical + lines, "booktabs" (LaTeX booktabs style) only + horizontal lines above and below the table and below + the header, or "borderless". Default: "standard" +--graphicx-option=GRAPHICX_OPTION + LaTeX graphicx package option. Possible values are + "dvipdfmx", "dvips", "dvisvgm", "luatex", "pdftex", + and "xetex".Default: "". +--font-encoding=FONT_ENCODING + LaTeX font encoding. Possible values are "", "T1" + (default), "OT1", "LGR,T1" or any other combination of + options to the `fontenc` package. +--reference-label=REFERENCE_LABEL + Per default the latex-writer puts the reference title + into hyperreferences. Specify "ref*" or "pageref*" to + get the section number or the page number. +--use-bibtex=<style,bibfile[,bibfile,...]> + Specify style and database(s) for bibtex, for example + "--use-bibtex=unsrt,mydb1,mydb2". Provisional! +--legacy-class-functions + Use legacy functions with class value list for + \DUtitle and \DUadmonition. +--new-class-functions Use \DUrole and "DUclass" wrappers for class values. + Place admonition content in an environment. (default) +--legacy-column-widths Use legacy algorithm to determine table column widths. + (provisional default) +--new-column-widths Use new algorithm to determine table column widths. + (future default) +--docutils-footnotes Footnotes with numbers/symbols by Docutils. (default) + (The alternative, --latex-footnotes, is not + implemented yet.) diff --git a/docutils/test/test_CLI.py b/docutils/test/test_CLI.py index 85dd25a58..f88e3e646 100644 --- a/docutils/test/test_CLI.py +++ b/docutils/test/test_CLI.py @@ -30,7 +30,7 @@ if __name__ == '__main__': # so we import the local `docutils` package. sys.path.insert(0, str(Path(__file__).resolve().parents[1])) -from docutils import __main__, frontend +from docutils import __main__, core, frontend # DATA_ROOT is ./test/data/ from the docutils root DATA_ROOT = Path(__file__).parent / 'data' @@ -59,11 +59,11 @@ class CliTests(unittest.TestCase): sys.argv = self.orig_argv locale.setlocale(locale.LC_ALL, 'C') # restore default (C) locale - def test_main_help(self): - # collect help text - sys.argv = ['docutils', '--help'] + def get_help_text(self, prog, entry_point): + # call entry_point function and collect help text + sys.argv = [prog, '--help'] try: - __main__.main() + entry_point() except SystemExit: pass output = sys.stdout.getvalue() @@ -72,15 +72,39 @@ class CliTests(unittest.TestCase): output, flags=re.DOTALL) # normalise error encoding default output = output.replace( - f'{frontend.OptionParser.default_error_encoding}:backslashreplace', + f'{core.OptionParser.default_error_encoding}:backslashreplace', 'utf-8:backslashreplace') + return output + + def test_main_help(self): + # collect help text + output = self.get_help_text('docutils', __main__.main) + # compare to stored version - docutils_txt = DATA_ROOT / 'help' / 'docutils.txt' + docutils_txt = os.path.join(DATA_ROOT, 'help/docutils.txt') with open(docutils_txt, encoding='utf-8') as samplefile: expected = samplefile.read() if expected != output: print_mismatch(expected, output) + def test_rst2html_help(self): + # collect help text + output = self.get_help_text('rst2html', core.rst2html) + # compare to stored version + with open('data/help/rst2html.txt') as samplefile: + expected = samplefile.read() + if expected != output: + print_mismatch(expected, output) + + def test_rst2latex_help(self): + # collect help text + output = self.get_help_text('rst2latex', core.rst2latex) + # compare to stored version + with open('data/help/rst2latex.txt') as samplefile: + expected = samplefile.read() + if expected != output: + print_mismatch(expected, output) + if __name__ == '__main__': unittest.main() |
