95 lines
3.1 KiB
Python
95 lines
3.1 KiB
Python
import re
|
|
|
|
import pytest
|
|
pytest.skip("Test is currently broken, see pelican pr #1618", allow_module_level=True)
|
|
|
|
from pelican.tests.support import unittest
|
|
|
|
from . import notebook
|
|
|
|
|
|
class TestNotebookTagRegex(unittest.TestCase):
|
|
|
|
def get_argdict(self, markup):
|
|
|
|
match = notebook.FORMAT.search(markup)
|
|
|
|
if match:
|
|
argdict = match.groupdict()
|
|
|
|
src = argdict['src']
|
|
start = argdict['start']
|
|
end = argdict['end']
|
|
language = argdict['language']
|
|
|
|
return src, start, end, language
|
|
|
|
return None
|
|
|
|
def test_basic_notebook_tag(self):
|
|
markup = u'path/to/thing.ipynb'
|
|
src, start, end, language = self.get_argdict(markup)
|
|
|
|
self.assertEqual(src, u'path/to/thing.ipynb')
|
|
self.assertIsNone(start)
|
|
self.assertIsNone(end)
|
|
self.assertIsNone(language)
|
|
|
|
def test_basic_notebook_tag_insensitive_to_whitespace(self):
|
|
markup = u' path/to/thing.ipynb '
|
|
src, start, end, language = self.get_argdict(markup)
|
|
|
|
self.assertEqual(src, u'path/to/thing.ipynb')
|
|
self.assertIsNone(start)
|
|
self.assertIsNone(end)
|
|
self.assertIsNone(language)
|
|
|
|
def test_notebook_tag_with_cells(self):
|
|
markup = u'path/to/thing.ipynb cells[1:5]'
|
|
src, start, end, language = self.get_argdict(markup)
|
|
|
|
self.assertEqual(src, u'path/to/thing.ipynb')
|
|
self.assertEqual(start, u'1')
|
|
self.assertEqual(end, u'5')
|
|
self.assertIsNone(language)
|
|
|
|
def test_notebook_tag_with_alphanumeric_language(self):
|
|
markup = u'path/to/thing.ipynb language[python3]'
|
|
src, start, end, language = self.get_argdict(markup)
|
|
|
|
self.assertEqual(src, u'path/to/thing.ipynb')
|
|
self.assertIsNone(start)
|
|
self.assertIsNone(end)
|
|
self.assertEqual(language, u'python3')
|
|
|
|
def test_notebook_tag_with_symbol_in_name_language(self):
|
|
for short_name in [u'c++', u'cpp-objdump', u'c++-objdumb', u'cxx-objdump']:
|
|
markup = u'path/to/thing.ipynb language[{}]'.format(short_name)
|
|
src, start, end, language = self.get_argdict(markup)
|
|
|
|
self.assertEqual(src, u'path/to/thing.ipynb')
|
|
self.assertIsNone(start)
|
|
self.assertIsNone(end)
|
|
self.assertEqual(language, short_name)
|
|
|
|
def test_notebook_tag_with_language_and_cells(self):
|
|
markup = u'path/to/thing.ipynb cells[1:5] language[julia]'
|
|
src, start, end, language = self.get_argdict(markup)
|
|
|
|
self.assertEqual(src, u'path/to/thing.ipynb')
|
|
self.assertEqual(start, u'1')
|
|
self.assertEqual(end, u'5')
|
|
self.assertEqual(language, u'julia')
|
|
|
|
def test_notebook_tag_with_language_and_cells_and_weird_spaces(self):
|
|
markup = u' path/to/thing.ipynb cells[1:5] language[julia] '
|
|
src, start, end, language = self.get_argdict(markup)
|
|
|
|
self.assertEqual(src, u'path/to/thing.ipynb')
|
|
self.assertEqual(start, u'1')
|
|
self.assertEqual(end, u'5')
|
|
self.assertEqual(language, u'julia')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main() |