[Python-checkins] cpython (2.7): fix parsing reST with code or code-block directives (closes #23063)

benjamin.peterson python-checkins at python.org
Thu Jan 15 06:00:54 CET 2015


https://hg.python.org/cpython/rev/38826e21f0db
changeset: 94147:38826e21f0db
branch: 2.7
parent: 94137:e280a04625cc
user: Benjamin Peterson <benjamin at python.org>
date: Wed Jan 14 23:56:35 2015 -0500
summary:
 fix parsing reST with code or code-block directives (closes #23063)
Patch by Marc Abramowitz.
files:
 Lib/distutils/command/check.py | 8 ++--
 Lib/distutils/tests/test_check.py | 31 +++++++++++++++++++
 Misc/NEWS | 3 +
 3 files changed, 38 insertions(+), 4 deletions(-)
diff --git a/Lib/distutils/command/check.py b/Lib/distutils/command/check.py
--- a/Lib/distutils/command/check.py
+++ b/Lib/distutils/command/check.py
@@ -126,7 +126,7 @@
 """Returns warnings when the provided data doesn't compile."""
 source_path = StringIO()
 parser = Parser()
- settings = frontend.OptionParser().get_default_values()
+ settings = frontend.OptionParser(components=(Parser,)).get_default_values()
 settings.tab_width = 4
 settings.pep_references = None
 settings.rfc_references = None
@@ -142,8 +142,8 @@
 document.note_source(source_path, -1)
 try:
 parser.parse(data, document)
- except AttributeError:
- reporter.messages.append((-1, 'Could not finish the parsing.',
- '', {}))
+ except AttributeError as e:
+ reporter.messages.append(
+ (-1, 'Could not finish the parsing: %s.' % e, '', {}))
 
 return reporter.messages
diff --git a/Lib/distutils/tests/test_check.py b/Lib/distutils/tests/test_check.py
--- a/Lib/distutils/tests/test_check.py
+++ b/Lib/distutils/tests/test_check.py
@@ -1,5 +1,6 @@
 # -*- encoding: utf8 -*-
 """Tests for distutils.command.check."""
+import textwrap
 import unittest
 from test.test_support import run_unittest
 
@@ -93,6 +94,36 @@
 cmd = self._run(metadata, strict=1, restructuredtext=1)
 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):
 
 metadata = {'url': 'xxx', 'author': 'xxx'}
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -15,6 +15,9 @@
 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
 availability of the function is checked during the compilation. Patch written
 by Bernard Spil.
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /