test_nbpy.py
48 lines
| 1.5 KiB
| text/x-python
|
PythonLexer
MinRK
|
r6209 | # -*- coding: utf8 -*- | ||
MinRK
|
r6476 | |||
from unittest import TestCase | ||||
Thomas Kluyver
|
r13361 | from IPython.utils.py3compat import string_types, iteritems | ||
Thomas Kluyver
|
r13353 | |||
MinRK
|
r6209 | from . import formattest | ||
Brian E. Granger
|
r4401 | |||
MinRK
|
r6209 | from .. import nbpy | ||
Brian E. Granger
|
r4406 | from .nbexamples import nb0, nb0_py | ||
Brian E. Granger
|
r4401 | |||
MinRK
|
r6476 | class TestPy(formattest.NBFormatTest, TestCase): | ||
Brian E. Granger
|
r4401 | |||
MinRK
|
r6209 | nb0_ref = nb0_py | ||
ext = 'py' | ||||
mod = nbpy | ||||
ignored_keys = ['collapsed', 'outputs', 'prompt_number', 'metadata'] | ||||
Brian E. Granger
|
r4401 | |||
MinRK
|
r6209 | 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): | ||||
Thomas Kluyver
|
r13361 | for k,v in iteritems(da): | ||
MinRK
|
r6209 | 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: | ||||
Thomas Kluyver
|
r13353 | if isinstance(da, string_types) and isinstance(db, string_types): | ||
MinRK
|
r6318 | # pyfile is not sensitive to preserving leading/trailing | ||
# newlines in blocks through roundtrip | ||||
da = da.strip('\n') | ||||
db = db.strip('\n') | ||||
Bradley M. Froehle
|
r7874 | self.assertEqual(da, db) | ||
MinRK
|
r6209 | 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) | ||||