formattest.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # -*- coding: utf8 -*-
  2. import io
  3. import os
  4. import shutil
  5. import tempfile
  6. pjoin = os.path.join
  7. from ..nbbase import (
  8. NotebookNode,
  9. new_code_cell, new_text_cell, new_worksheet, new_notebook
  10. )
  11. from ..nbpy import reads, writes, read, write
  12. from .nbexamples import nb0, nb0_py
  13. def open_utf8(fname, mode):
  14. return io.open(fname, mode=mode, encoding='utf-8')
  15. class NBFormatTest:
  16. """Mixin for writing notebook format tests"""
  17. # override with appropriate values in subclasses
  18. nb0_ref = None
  19. ext = None
  20. mod = None
  21. def setUp(self):
  22. self.wd = tempfile.mkdtemp()
  23. def tearDown(self):
  24. shutil.rmtree(self.wd)
  25. def assertNBEquals(self, nba, nbb):
  26. self.assertEqual(nba, nbb)
  27. def test_writes(self):
  28. s = self.mod.writes(nb0)
  29. if self.nb0_ref:
  30. self.assertEqual(s, self.nb0_ref)
  31. def test_reads(self):
  32. s = self.mod.writes(nb0)
  33. nb = self.mod.reads(s)
  34. def test_roundtrip(self):
  35. s = self.mod.writes(nb0)
  36. self.assertNBEquals(self.mod.reads(s),nb0)
  37. def test_write_file(self):
  38. with open_utf8(pjoin(self.wd, "nb0.%s" % self.ext), 'w') as f:
  39. self.mod.write(nb0, f)
  40. def test_read_file(self):
  41. with open_utf8(pjoin(self.wd, "nb0.%s" % self.ext), 'w') as f:
  42. self.mod.write(nb0, f)
  43. with open_utf8(pjoin(self.wd, "nb0.%s" % self.ext), 'r') as f:
  44. nb = self.mod.read(f)