Stefan H. Holek committed 867fb2f

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

Comments (0)

Files changed (2)


         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:


     # 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')
+                # Re-read manifest
+                try:
+                    cmd.read_manifest()
+                except UnicodeDecodeError, e:
-            self.assertRaises(UnicodeDecodeError, cmd.read_manifest)
     def test_sdist_with_utf8_encoded_filename(self):
         # Test for #303.
         dist = Distribution(SETUP_ATTRS)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.