diff options
author | Stefan H. Holek <stefan@epy.co.at> | 2012-10-26 12:46:41 +0200 |
---|---|---|
committer | Stefan H. Holek <stefan@epy.co.at> | 2012-10-26 12:46:41 +0200 |
commit | e485c19015d4fced68b25c09ca66a1743d3ab27c (patch) | |
tree | 1191fc24861c35b32cfbc8fecf896a5a5ee06734 | |
parent | f8481f4b522f0fbeafbb36a20dd105497f2623ac (diff) | |
download | external_python_setuptools-e485c19015d4fced68b25c09ca66a1743d3ab27c.tar.gz external_python_setuptools-e485c19015d4fced68b25c09ca66a1743d3ab27c.tar.bz2 external_python_setuptools-e485c19015d4fced68b25c09ca66a1743d3ab27c.zip |
Keep 'surrogateescape' when reading the manifest, to avoid breaking on bad input.
--HG--
branch : distribute
extra : rebase_source : 6f894cd508e73fae0ad02860654df5181055ba4d
-rwxr-xr-x | setuptools/command/sdist.py | 3 | ||||
-rw-r--r-- | setuptools/tests/test_sdist.py | 9 |
2 files changed, 8 insertions, 4 deletions
diff --git a/setuptools/command/sdist.py b/setuptools/command/sdist.py index d5259c2b..79eed214 100755 --- a/setuptools/command/sdist.py +++ b/setuptools/command/sdist.py @@ -283,7 +283,8 @@ class sdist(_sdist): manifest = open(self.manifest, 'rbU') for line in manifest: if sys.version_info >= (3,): - line = line.decode('UTF-8') + # Don't break if surrogates have crept into the manifest + line = line.decode('UTF-8', 'surrogateescape') # ignore comments and blank lines line = line.strip() if line.startswith('#') or not line: diff --git a/setuptools/tests/test_sdist.py b/setuptools/tests/test_sdist.py index 378015a8..04b3db66 100644 --- a/setuptools/tests/test_sdist.py +++ b/setuptools/tests/test_sdist.py @@ -262,7 +262,7 @@ class TestSdistTest(unittest.TestCase): # Python 3 only if sys.version_info >= (3,): - def test_read_manifest_rejects_surrogates(self): + def test_manifest_is_read_with_surrogateescape_error_handler(self): # Test for #303. # This is hard to test on HFS Plus because it quotes unknown @@ -286,11 +286,14 @@ class TestSdistTest(unittest.TestCase): manifest = open(cmd.manifest, 'ab') manifest.write(filename+b('\n')) manifest.close() + # Re-read manifest + try: + cmd.read_manifest() + except UnicodeDecodeError, e: + self.fail(e) finally: unquiet() - self.assertRaises(UnicodeDecodeError, cmd.read_manifest) - def test_sdist_with_utf8_encoded_filename(self): # Test for #303. dist = Distribution(SETUP_ATTRS) |