test_notebook.py 3.1 KB

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