Issue #12411: Fix to cgi.parse_multipart to correctly use bytes boundaries and
bytes data. Patch by Jonas Wagner.
diff --git a/Lib/test/test_cgi.py b/Lib/test/test_cgi.py
index 3031fb3..07e760b 100644
--- a/Lib/test/test_cgi.py
+++ b/Lib/test/test_cgi.py
@@ -4,6 +4,7 @@
 import sys
 import tempfile
 import unittest
+from collections import namedtuple
 from io import StringIO, BytesIO
 
 class HackedSysModule:
@@ -118,6 +119,23 @@
 
 class CgiTests(unittest.TestCase):
 
+    def test_parse_multipart(self):
+        fp = BytesIO(POSTDATA.encode('latin1'))
+        env = {'boundary': BOUNDARY.encode('latin1'),
+               'CONTENT-LENGTH': '558'}
+        result = cgi.parse_multipart(fp, env)
+        expected = {'submit': [b' Add '], 'id': [b'1234'],
+                    'file': [b'Testing 123.\n'], 'title': [b'']}
+        self.assertEqual(result, expected)
+
+    def test_fieldstorage_properties(self):
+        fs = cgi.FieldStorage()
+        self.assertFalse(fs)
+        self.assertIn("FieldStorage", repr(fs))
+        self.assertEqual(list(fs), list(fs.keys()))
+        fs.list.append(namedtuple('MockFieldStorage', 'name')('fieldvalue'))
+        self.assertTrue(fs)
+
     def test_escape(self):
         self.assertEqual("test & string", cgi.escape("test & string"))
         self.assertEqual("&lt;test string&gt;", cgi.escape("<test string>"))
@@ -151,7 +169,8 @@
 
     def test_log(self):
         cgi.log("Testing")
-
+        cgi.logfile = "fail/"
+        cgi.initlog("%s", "Testing initlog")
         cgi.logfp = StringIO()
         cgi.initlog("%s", "Testing initlog 1")
         cgi.log("%s", "Testing log 2")