Commits

Stefan H. Holek committed 867fb2f

Keep 'surrogateescape' when reading the manifest, to avoid breaking on bad input.

Comments (0)

Files changed (2)

setuptools/command/sdist.py

         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:

setuptools/tests/test_sdist.py

     # 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
                 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)