##// END OF EJS Templates
Merge pull request #7065 from Carreau/4.8...
Merge pull request #7065 from Carreau/4.8 Codemirror 4.8

File last commit:

r18257:71dfbb06
r19109:cdf22627 merge
Show More
test_json.py
103 lines | 3.4 KiB | text/x-python | PythonLexer
MinRK
don't write or read transient values to disk...
r18257 import copy
import json
MinRK
test that PNG / JPEG output data are unicode
r12390 from base64 import decodestring
Brian E. Granger
Full versioning added to nbformat.
r4406 from unittest import TestCase
Thomas Kluyver
Replace references to unicode and basestring
r13353 from IPython.utils.py3compat import unicode_type
Brian E. Granger
Full versioning added to nbformat.
r4406 from ..nbjson import reads, writes
MinRK
don't write or read transient values to disk...
r18257 from ..nbbase import from_dict
MinRK
add NBFormatTestCase base class, to consolidate nbformat testing
r6209 from .. import nbjson
Brian E. Granger
Full versioning added to nbformat.
r4406 from .nbexamples import nb0
MinRK
add NBFormatTestCase base class, to consolidate nbformat testing
r6209 from . import formattest
Brian E. Granger
Full versioning added to nbformat.
r4406
MinRK
add NBFormatTestCase base class, to consolidate nbformat testing
r6209 from .nbexamples import nb0
MinRK
NBFormatTest is now a mixin, rather than a base class
r6476 class TestJSON(formattest.NBFormatTest, TestCase):
MinRK
add NBFormatTestCase base class, to consolidate nbformat testing
r6209
nb0_ref = None
ext = 'ipynb'
mod = nbjson
Brian E. Granger
Full versioning added to nbformat.
r4406
MinRK
split likely multiline strings when writing to/from JSON
r5278 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)
Bradley M. Froehle
s/assertEquals/assertEqual/
r7874 self.assertEqual(nbjson.reads(s),nb0)
MinRK
split likely multiline strings when writing to/from JSON
r5278
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)
Bradley M. Froehle
s/assertEquals/assertEqual/
r7874 self.assertEqual(nbjson.reads(s),nb0)
Brian E. Granger
Full versioning added to nbformat.
r4406
MinRK
don't write or read transient values to disk...
r18257 def test_strip_transient(self):
"""transient values aren't written to files"""
nb = copy.deepcopy(nb0)
nb.orig_nbformat = 2
nb.orig_nbformat_minor = 3
nb.worksheets[0].cells[0].metadata.trusted = False
nbs = nbjson.writes(nb)
nb2 = from_dict(json.loads(nbs))
self.assertNotIn('orig_nbformat', nb2)
self.assertNotIn('orig_nbformat_minor', nb2)
for cell in nb2.worksheets[0].cells:
self.assertNotIn('trusted', cell.metadata)
def test_to_json(self):
"""to_notebook_json doesn't strip transient"""
nb = copy.deepcopy(nb0)
nb.orig_nbformat = 2
nb.orig_nbformat_minor = 3
nb.worksheets[0].cells[0].metadata.trusted = False
nbs = json.dumps(nb)
nb2 = nbjson.to_notebook(json.loads(nbs))
nb2 = from_dict(json.loads(nbs))
self.assertIn('orig_nbformat', nb2)
self.assertIn('orig_nbformat_minor', nb2)
cell = nb2.worksheets[0].cells[0]
self.assertIn('trusted', cell.metadata)
MinRK
test that PNG / JPEG output data are unicode
r12390 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']
Thomas Kluyver
Replace references to unicode and basestring
r13353 self.assertEqual(type(pngdata), unicode_type)
MinRK
test that PNG / JPEG output data are unicode
r12390 # 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']
Thomas Kluyver
Replace references to unicode and basestring
r13353 self.assertEqual(type(jpegdata), unicode_type)
MinRK
test that PNG / JPEG output data are unicode
r12390 # test that it is valid b64 data
b64bytes = jpegdata.encode('ascii')
raw_bytes = decodestring(b64bytes)
assert found_jpeg, "never found jpeg output"
Brian E. Granger
Full versioning added to nbformat.
r4406