##// END OF EJS Templates
Backport PR #4849: Various unicode fixes (mostly on Windows)...
Backport PR #4849: Various unicode fixes (mostly on Windows) There were warnings on startup of IPython, and the qtconsole and notebook could not be started at all if the user's home directory is unicode. Changes: - add `prefer_stream=True` flag to utils.encoding.getdefaultencoding, since the right answer is different for stream output and other things. - always encode args to Popen on Windows Python 2 - never add unicode to sys.path on Python 2 These should be backported for 1.2, and it would be great if some unicode-locale Windows users (@jstenar) could double check the sanity of the changes.

File last commit:

r12466:3ff9c5cf
r14916:7cbbbbc4
Show More
test_json.py
69 lines | 2.2 KiB | text/x-python | PythonLexer
import pprint
from base64 import decodestring
from unittest import TestCase
from ..nbjson import reads, writes
from .. import nbjson
from .nbexamples import nb0
from . import formattest
from .nbexamples import nb0
class TestJSON(formattest.NBFormatTest, TestCase):
nb0_ref = None
ext = 'ipynb'
mod = nbjson
def test_roundtrip_nosplit(self):
"""Ensure that multiline blobs are still readable"""
# ensures that notebooks written prior to splitlines change
# are still readable.
s = writes(nb0, split_lines=False)
self.assertEqual(nbjson.reads(s),nb0)
def test_roundtrip_split(self):
"""Ensure that splitting multiline blocks is safe"""
# This won't differ from test_roundtrip unless the default changes
s = writes(nb0, split_lines=True)
self.assertEqual(nbjson.reads(s),nb0)
def test_read_png(self):
"""PNG output data is b64 unicode"""
s = writes(nb0)
nb1 = nbjson.reads(s)
found_png = False
for cell in nb1.worksheets[0].cells:
if not 'outputs' in cell:
continue
for output in cell.outputs:
if 'png' in output:
found_png = True
pngdata = output['png']
self.assertEqual(type(pngdata), unicode)
# test that it is valid b64 data
b64bytes = pngdata.encode('ascii')
raw_bytes = decodestring(b64bytes)
assert found_png, "never found png output"
def test_read_jpeg(self):
"""JPEG output data is b64 unicode"""
s = writes(nb0)
nb1 = nbjson.reads(s)
found_jpeg = False
for cell in nb1.worksheets[0].cells:
if not 'outputs' in cell:
continue
for output in cell.outputs:
if 'jpeg' in output:
found_jpeg = True
jpegdata = output['jpeg']
self.assertEqual(type(jpegdata), unicode)
# test that it is valid b64 data
b64bytes = jpegdata.encode('ascii')
raw_bytes = decodestring(b64bytes)
assert found_jpeg, "never found jpeg output"