diff --git a/Lib/distutils/command/check.py b/Lib/distutils/command/check.py index b67c7953087..22b9349dd60 100644 --- a/Lib/distutils/command/check.py +++ b/Lib/distutils/command/check.py @@ -23,6 +23,9 @@ def __init__(self, source, report_level, halt_level, stream=None, def system_message(self, level, message, *children, **kwargs): self.messages.append((level, message, children, kwargs)) + return nodes.system_message(message, level=level, + type=self.levels[level], + *children, **kwargs) HAS_DOCUTILS = True except Exception: diff --git a/Lib/distutils/tests/test_register.py b/Lib/distutils/tests/test_register.py index 5863ae1422b..a86b8606e4e 100644 --- a/Lib/distutils/tests/test_register.py +++ b/Lib/distutils/tests/test_register.py @@ -1,5 +1,4 @@ """Tests for distutils.command.register.""" -import sys import os import unittest import getpass @@ -10,11 +9,14 @@ from distutils.command import register as register_module from distutils.command.register import register -from distutils.core import Distribution from distutils.errors import DistutilsSetupError -from distutils.tests import support -from distutils.tests.test_config import PYPIRC, PyPIRCCommandTestCase +from distutils.tests.test_config import PyPIRCCommandTestCase + +try: + import docutils +except ImportError: + docutils = None PYPIRC_NOPASSWORD = """\ [distutils] @@ -193,6 +195,7 @@ def test_password_reset(self): self.assertEqual(headers['Content-length'], '290') self.assertTrue((b'tarek') in req.data) + @unittest.skipUnless(docutils is not None, 'needs docutils') def test_strict(self): # testing the script option # when on, the register command stops if @@ -205,13 +208,6 @@ def test_strict(self): cmd.strict = 1 self.assertRaises(DistutilsSetupError, cmd.run) - # we don't test the reSt feature if docutils - # is not installed - try: - import docutils - except ImportError: - return - # metadata are OK but long_description is broken metadata = {'url': 'xxx', 'author': 'xxx', 'author_email': 'éxéxé', @@ -265,6 +261,22 @@ def test_strict(self): finally: del register_module.input + @unittest.skipUnless(docutils is not None, 'needs docutils') + def test_register_invalid_long_description(self): + description = ':funkie:`str`' # mimic Sphinx-specific markup + metadata = {'url': 'xxx', 'author': 'xxx', + 'author_email': 'xxx', + 'name': 'xxx', 'version': 'xxx', + 'long_description': description} + cmd = self._get_cmd(metadata) + cmd.ensure_finalized() + cmd.strict = True + inputs = Inputs('2', 'tarek', 'tarek@ziade.org') + register_module.input = inputs + self.addCleanup(delattr, register_module, 'input') + + self.assertRaises(DistutilsSetupError, cmd.run) + def test_check_metadata_deprecated(self): # makes sure make_metadata is deprecated cmd = self._get_cmd() diff --git a/Misc/ACKS b/Misc/ACKS index 05670693d8c..831885b6ba5 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -222,6 +222,7 @@ David Costanzo Scott Cotton Greg Couch David Cournapeau +Julien Courteau Steve Cousins Alex Coventry Matthew Dixon Cowles @@ -621,6 +622,7 @@ Thomas Lee Christopher Lee Tennessee Leeuwenburg Luc Lefebvre +Pierre Paul Lefebvre Glyph Lefkowitz Vincent Legoll Kip Lehman diff --git a/Misc/NEWS b/Misc/NEWS index 3adc531ab65..061952d2852 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -177,6 +177,9 @@ Library - Issue #16628: Fix a memory leak in ctypes.resize(). +- Issue #13614: Fix setup.py register failure with invalid rst in description. + Patch by Julien Courteau and Pierre Paul Lefebvre. + - Issue #13512: Create ~/.pypirc securely (CVE-2011-4944). Initial patch by Philip Jenvey, tested by Mageia and Debian.