Kaydet (Commit) 95ee9c71 authored tarafından Benjamin Peterson's avatar Benjamin Peterson

fix parsing reST with code or code-block directives (closes #23063)

Patch by Marc Abramowitz.
üst a44ec3ff
...@@ -126,7 +126,7 @@ class check(Command): ...@@ -126,7 +126,7 @@ class check(Command):
"""Returns warnings when the provided data doesn't compile.""" """Returns warnings when the provided data doesn't compile."""
source_path = StringIO() source_path = StringIO()
parser = Parser() parser = Parser()
settings = frontend.OptionParser().get_default_values() settings = frontend.OptionParser(components=(Parser,)).get_default_values()
settings.tab_width = 4 settings.tab_width = 4
settings.pep_references = None settings.pep_references = None
settings.rfc_references = None settings.rfc_references = None
...@@ -142,8 +142,8 @@ class check(Command): ...@@ -142,8 +142,8 @@ class check(Command):
document.note_source(source_path, -1) document.note_source(source_path, -1)
try: try:
parser.parse(data, document) parser.parse(data, document)
except AttributeError: except AttributeError as e:
reporter.messages.append((-1, 'Could not finish the parsing.', reporter.messages.append(
'', {})) (-1, 'Could not finish the parsing: %s.' % e, '', {}))
return reporter.messages return reporter.messages
# -*- encoding: utf8 -*- # -*- encoding: utf8 -*-
"""Tests for distutils.command.check.""" """Tests for distutils.command.check."""
import textwrap
import unittest import unittest
from test.test_support import run_unittest from test.test_support import run_unittest
...@@ -93,6 +94,36 @@ class CheckTestCase(support.LoggingSilencer, ...@@ -93,6 +94,36 @@ class CheckTestCase(support.LoggingSilencer,
cmd = self._run(metadata, strict=1, restructuredtext=1) cmd = self._run(metadata, strict=1, restructuredtext=1)
self.assertEqual(cmd._warnings, 0) self.assertEqual(cmd._warnings, 0)
@unittest.skipUnless(HAS_DOCUTILS, "won't test without docutils")
def test_check_restructuredtext_with_syntax_highlight(self):
# Don't fail if there is a `code` or `code-block` directive
example_rst_docs = []
example_rst_docs.append(textwrap.dedent("""\
Here's some code:
.. code:: python
def foo():
pass
"""))
example_rst_docs.append(textwrap.dedent("""\
Here's some code:
.. code-block:: python
def foo():
pass
"""))
for rest_with_code in example_rst_docs:
pkg_info, dist = self.create_dist(long_description=rest_with_code)
cmd = check(dist)
cmd.check_restructuredtext()
self.assertEqual(cmd._warnings, 0)
msgs = cmd._check_rst_data(rest_with_code)
self.assertEqual(len(msgs), 0)
def test_check_all(self): def test_check_all(self):
metadata = {'url': 'xxx', 'author': 'xxx'} metadata = {'url': 'xxx', 'author': 'xxx'}
......
...@@ -15,6 +15,9 @@ Core and Builtins ...@@ -15,6 +15,9 @@ Core and Builtins
Library Library
------- -------
- Issue #23063: In the disutils' check command, fix parsing of reST with code or
code-block directives.
- Issue #21356: Make ssl.RAND_egd() optional to support LibreSSL. The - Issue #21356: Make ssl.RAND_egd() optional to support LibreSSL. The
availability of the function is checked during the compilation. Patch written availability of the function is checked during the compilation. Patch written
by Bernard Spil. by Bernard Spil.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment