test_nbpy.py
46 lines
| 1.4 KiB
| text/x-python
|
PythonLexer
MinRK
|
r6209 | # -*- coding: utf8 -*- | ||
MinRK
|
r6476 | |||
from unittest import TestCase | ||||
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): | ||||
for k,v in da.iteritems(): | ||||
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: | ||||
MinRK
|
r6318 | if isinstance(da, basestring) and isinstance(db, basestring): | ||
# pyfile is not sensitive to preserving leading/trailing | ||||
# newlines in blocks through roundtrip | ||||
da = da.strip('\n') | ||||
db = db.strip('\n') | ||||
MinRK
|
r6209 | self.assertEquals(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) | ||||