123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- # -*- coding: utf8 -*-
- from unittest import TestCase
- from ipython_genutils.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)
-
|