]> granicus.if.org Git - python/commitdiff
bpo-31292: Fixed distutils check --restructuredtext for include directives (GH-10605)
authorPhilipp A <flying-sheep@web.de>
Wed, 27 Mar 2019 21:34:19 +0000 (22:34 +0100)
committerCheryl Sabella <cheryl.sabella@gmail.com>
Wed, 27 Mar 2019 21:34:19 +0000 (17:34 -0400)
Lib/distutils/command/check.py
Lib/distutils/tests/includetest.rst [new file with mode: 0644]
Lib/distutils/tests/test_check.py
Misc/NEWS.d/next/Library/2017-08-30-20-27-00.bpo-31292.dKIaZb.rst [new file with mode: 0644]

index 7ebe707cff4963db91990ed7d73f339e10ff6e80..04c2f9642d7334f9f2fa7069550bd5fd4dd00c29 100644 (file)
@@ -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 (file)
index 0000000..d7b4ae3
--- /dev/null
@@ -0,0 +1 @@
+This should be included.
index 3d22868e313be788468e898863e301896f57a990..e534aca1d47637ce8058740bfd4385719c505dab 100644 (file)
@@ -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 (file)
index 0000000..b62eee3
--- /dev/null
@@ -0,0 +1,2 @@
+Fix ``setup.py check --restructuredtext`` for
+files containing ``include`` directives.