formattest.py 1.3 KB

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