core: fix serialization of empty bytes() on 3.x.
parent
dd62009f70
commit
04e138e060
@ -0,0 +1,37 @@
|
|||||||
|
|
||||||
|
try:
|
||||||
|
from io import StringIO
|
||||||
|
from io import BytesIO
|
||||||
|
except ImportError:
|
||||||
|
from StringIO import StringIO as StringIO
|
||||||
|
from StringIO import StringIO as BytesIO
|
||||||
|
|
||||||
|
import unittest2
|
||||||
|
|
||||||
|
import mitogen.core
|
||||||
|
from mitogen.core import b
|
||||||
|
|
||||||
|
|
||||||
|
def roundtrip(v):
|
||||||
|
msg = mitogen.core.Message.pickled(v)
|
||||||
|
return mitogen.core.Message(data=msg.data).unpickle()
|
||||||
|
|
||||||
|
|
||||||
|
class BlobTest(unittest2.TestCase):
|
||||||
|
klass = mitogen.core.Blob
|
||||||
|
|
||||||
|
# Python 3 pickle protocol 2 does weird stuff depending on whether an empty
|
||||||
|
# or nonempty bytes is being serialized. For non-empty, it yields a
|
||||||
|
# _codecs.encode() call. For empty, it yields a bytes() call.
|
||||||
|
|
||||||
|
def test_nonempty_bytes(self):
|
||||||
|
v = mitogen.core.Blob(b('dave'))
|
||||||
|
self.assertEquals(b('dave'), roundtrip(v))
|
||||||
|
|
||||||
|
def test_empty_bytes(self):
|
||||||
|
v = mitogen.core.Blob(b(''))
|
||||||
|
self.assertEquals(b(''), roundtrip(v))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest2.main()
|
Loading…
Reference in New Issue