##// END OF EJS Templates
handle missing stream name in nbformat conversion...
handle missing stream name in nbformat conversion It was sometimes possible for this key to be absent. Even though that's never been officially valid, it happened, so might as well handle it.

File last commit:

r13361:52dae015
r19976:63f57473
Show More
test_nbpy.py
48 lines | 1.5 KiB | text/x-python | PythonLexer
# -*- coding: utf8 -*-
from unittest import TestCase
from IPython.utils.py3compat import string_types, iteritems
from . import formattest
from .. import nbpy
from .nbexamples import nb0, nb0_py
class TestPy(formattest.NBFormatTest, TestCase):
nb0_ref = nb0_py
ext = 'py'
mod = nbpy
ignored_keys = ['collapsed', 'outputs', 'prompt_number', 'metadata']
def assertSubset(self, da, db):
"""assert that da is a subset of db, ignoring self.ignored_keys.
Called recursively on containers, ultimately comparing individual
elements.
"""
if isinstance(da, dict):
for k,v in iteritems(da):
if k in self.ignored_keys:
continue
self.assertTrue(k in db)
self.assertSubset(v, db[k])
elif isinstance(da, list):
for a,b in zip(da, db):
self.assertSubset(a,b)
else:
if isinstance(da, string_types) and isinstance(db, string_types):
# pyfile is not sensitive to preserving leading/trailing
# newlines in blocks through roundtrip
da = da.strip('\n')
db = db.strip('\n')
self.assertEqual(da, db)
return True
def assertNBEquals(self, nba, nbb):
# since roundtrip is lossy, only compare keys that are preserved
# assumes nba is read from my file format
return self.assertSubset(nba, nbb)