test_notebook.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import re
  2. from pelican.tests.support import unittest
  3. from . import notebook
  4. class TestNotebookTagRegex(unittest.TestCase):
  5. def get_argdict(self, markup):
  6. match = notebook.FORMAT.search(markup)
  7. if match:
  8. argdict = match.groupdict()
  9. src = argdict['src']
  10. start = argdict['start']
  11. end = argdict['end']
  12. language = argdict['language']
  13. return src, start, end, language
  14. return None
  15. def test_basic_notebook_tag(self):
  16. markup = u'path/to/thing.ipynb'
  17. src, start, end, language = self.get_argdict(markup)
  18. self.assertEqual(src, u'path/to/thing.ipynb')
  19. self.assertIsNone(start)
  20. self.assertIsNone(end)
  21. self.assertIsNone(language)
  22. def test_basic_notebook_tag_insensitive_to_whitespace(self):
  23. markup = u' path/to/thing.ipynb '
  24. src, start, end, language = self.get_argdict(markup)
  25. self.assertEqual(src, u'path/to/thing.ipynb')
  26. self.assertIsNone(start)
  27. self.assertIsNone(end)
  28. self.assertIsNone(language)
  29. def test_notebook_tag_with_cells(self):
  30. markup = u'path/to/thing.ipynb cells[1:5]'
  31. src, start, end, language = self.get_argdict(markup)
  32. self.assertEqual(src, u'path/to/thing.ipynb')
  33. self.assertEqual(start, u'1')
  34. self.assertEqual(end, u'5')
  35. self.assertIsNone(language)
  36. def test_notebook_tag_with_alphanumeric_language(self):
  37. markup = u'path/to/thing.ipynb language[python3]'
  38. src, start, end, language = self.get_argdict(markup)
  39. self.assertEqual(src, u'path/to/thing.ipynb')
  40. self.assertIsNone(start)
  41. self.assertIsNone(end)
  42. self.assertEqual(language, u'python3')
  43. def test_notebook_tag_with_symbol_in_name_language(self):
  44. for short_name in [u'c++', u'cpp-objdump', u'c++-objdumb', u'cxx-objdump']:
  45. markup = u'path/to/thing.ipynb language[{}]'.format(short_name)
  46. src, start, end, language = self.get_argdict(markup)
  47. self.assertEqual(src, u'path/to/thing.ipynb')
  48. self.assertIsNone(start)
  49. self.assertIsNone(end)
  50. self.assertEqual(language, short_name)
  51. def test_notebook_tag_with_language_and_cells(self):
  52. markup = u'path/to/thing.ipynb cells[1:5] language[julia]'
  53. src, start, end, language = self.get_argdict(markup)
  54. self.assertEqual(src, u'path/to/thing.ipynb')
  55. self.assertEqual(start, u'1')
  56. self.assertEqual(end, u'5')
  57. self.assertEqual(language, u'julia')
  58. def test_notebook_tag_with_language_and_cells_and_weird_spaces(self):
  59. markup = u' path/to/thing.ipynb cells[1:5] language[julia] '
  60. src, start, end, language = self.get_argdict(markup)
  61. self.assertEqual(src, u'path/to/thing.ipynb')
  62. self.assertEqual(start, u'1')
  63. self.assertEqual(end, u'5')
  64. self.assertEqual(language, u'julia')
  65. if __name__ == '__main__':
  66. unittest.main()