diff options
author | Philipp A <flying-sheep@web.de> | 2019-03-27 22:34:19 +0100 |
---|---|---|
committer | Cheryl Sabella <cheryl.sabella@gmail.com> | 2019-03-27 17:34:19 -0400 |
commit | d5a5a33f12b60129d57f9b423b77d2fcba506834 (patch) | |
tree | 467f333ea40737d6598e845cdc346d77196c2a24 | |
parent | a694f2394881fb68b5646061ded01fff6dc47778 (diff) | |
download | cpython-git-d5a5a33f12b60129d57f9b423b77d2fcba506834.tar.gz |
bpo-31292: Fixed distutils check --restructuredtext for include directives (GH-10605)
-rw-r--r-- | Lib/distutils/command/check.py | 3 | ||||
-rw-r--r-- | Lib/distutils/tests/includetest.rst | 1 | ||||
-rw-r--r-- | Lib/distutils/tests/test_check.py | 16 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2017-08-30-20-27-00.bpo-31292.dKIaZb.rst | 2 |
4 files changed, 20 insertions, 2 deletions
diff --git a/Lib/distutils/command/check.py b/Lib/distutils/command/check.py index 7ebe707cff..04c2f9642d 100644 --- a/Lib/distutils/command/check.py +++ b/Lib/distutils/command/check.py @@ -120,7 +120,8 @@ class check(Command): def _check_rst_data(self, data): """Returns warnings when the provided data doesn't compile.""" - source_path = StringIO() + # the include and csv_table directives need this to be a path + source_path = self.distribution.script_name or 'setup.py' parser = Parser() settings = frontend.OptionParser(components=(Parser,)).get_default_values() settings.tab_width = 4 diff --git a/Lib/distutils/tests/includetest.rst b/Lib/distutils/tests/includetest.rst new file mode 100644 index 0000000000..d7b4ae38b0 --- /dev/null +++ b/Lib/distutils/tests/includetest.rst @@ -0,0 +1 @@ +This should be included. diff --git a/Lib/distutils/tests/test_check.py b/Lib/distutils/tests/test_check.py index 3d22868e31..e534aca1d4 100644 --- a/Lib/distutils/tests/test_check.py +++ b/Lib/distutils/tests/test_check.py @@ -1,4 +1,5 @@ """Tests for distutils.command.check.""" +import os import textwrap import unittest from test.support import run_unittest @@ -13,13 +14,19 @@ except ImportError: pygments = None +HERE = os.path.dirname(__file__) + + class CheckTestCase(support.LoggingSilencer, support.TempdirManager, unittest.TestCase): - def _run(self, metadata=None, **options): + def _run(self, metadata=None, cwd=None, **options): if metadata is None: metadata = {} + if cwd is not None: + old_dir = os.getcwd() + os.chdir(cwd) pkg_info, dist = self.create_dist(**metadata) cmd = check(dist) cmd.initialize_options() @@ -27,6 +34,8 @@ class CheckTestCase(support.LoggingSilencer, setattr(cmd, name, value) cmd.ensure_finalized() cmd.run() + if cwd is not None: + os.chdir(old_dir) return cmd def test_check_metadata(self): @@ -99,6 +108,11 @@ class CheckTestCase(support.LoggingSilencer, cmd = self._run(metadata, strict=1, restructuredtext=1) self.assertEqual(cmd._warnings, 0) + # check that includes work to test #31292 + metadata['long_description'] = 'title\n=====\n\n.. include:: includetest.rst' + cmd = self._run(metadata, cwd=HERE, 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 diff --git a/Misc/NEWS.d/next/Library/2017-08-30-20-27-00.bpo-31292.dKIaZb.rst b/Misc/NEWS.d/next/Library/2017-08-30-20-27-00.bpo-31292.dKIaZb.rst new file mode 100644 index 0000000000..b62eee3c5e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2017-08-30-20-27-00.bpo-31292.dKIaZb.rst @@ -0,0 +1,2 @@ +Fix ``setup.py check --restructuredtext`` for +files containing ``include`` directives. |