##// END OF EJS Templates
Merge pull request #6828 from takluyver/terminal-list...
Merge pull request #6828 from takluyver/terminal-list Add terminals tab to the dashboard

File last commit:

r18427:7b2e741d
r18615:96791286 merge
Show More
test_markdown.py
129 lines | 4.2 KiB | text/x-python | PythonLexer
Thomas Kluyver
Fix mathjax pass-through with mistune
r17259 """Tests for conversions from markdown to other formats"""
Jonathan Frederic
Add new filter tests
r11902
Thomas Kluyver
Fix mathjax pass-through with mistune
r17259 # Copyright (c) IPython Development Team.
Jonathan Frederic
Add new filter tests
r11902 # Distributed under the terms of the Modified BSD License.
Jonathan Frederic
Escape asterik in rst tests
r11920 from copy import copy
Jonathan Frederic
Add new filter tests
r11902
Jonathan Frederic
Check for tokens instead of fuzzy output comparison
r11917 from IPython.utils.py3compat import string_types
Jonathan Frederic
Use decorator to enable test generation
r11935 from IPython.testing import decorators as dec
Jonathan Frederic
Add new filter tests
r11902
from ...tests.base import TestsBase
Jonathan Frederic
Explicit imports
r11928 from ..markdown import markdown2latex, markdown2html, markdown2rst
Jonathan Frederic
Add new filter tests
r11902
MinRK
allow passing extra args to pandoc filters...
r17885 from jinja2 import Environment
Jonathan Frederic
Add new filter tests
r11902
class TestMarkdown(TestsBase):
tests = [
'*test',
'**test',
'*test*',
'_test_',
'__test__',
'__*test*__',
'**test**',
'#test',
'##test',
'test\n----',
Jonathan Frederic
Removed large tests
r11916 'test [link](https://google.com/)']
Jonathan Frederic
Add new filter tests
r11902
Jonathan Frederic
Check for tokens instead of fuzzy output comparison
r11917 tokens = [
'*test',
'**test',
'test',
'test',
'test',
'test',
'test',
'test',
'test',
'test',
('test', 'https://google.com/')]
Jonathan Frederic
Add new filter tests
r11902
Jonathan Frederic
Use decorator to enable test generation
r11935 @dec.onlyif_cmds_exist('pandoc')
Jonathan Frederic
Add new filter tests
r11902 def test_markdown2latex(self):
Jonathan Frederic
Shrink header comments
r11934 """markdown2latex test"""
Jonathan Frederic
Add new filter tests
r11902 for index, test in enumerate(self.tests):
Thomas Kluyver
Remove ParametricTestCase from nbconvert tests
r12373 self._try_markdown(markdown2latex, test, self.tokens[index])
Jonathan Frederic
Add new filter tests
r11902
MinRK
allow passing extra args to pandoc filters...
r17885 @dec.onlyif_cmds_exist('pandoc')
Benjamin ABEL
Fix issue #5877 with tests...
r18427 def test_markdown2latex_markup(self):
"""markdown2latex with markup kwarg test"""
# This string should be passed through unaltered with pandoc's
# markdown_strict reader
s = '1) arabic number with parenthesis'
self.assertEqual(markdown2latex(s, markup='markdown_strict'), s)
# This string should be passed through unaltered with pandoc's
# markdown_strict+tex_math_dollars reader
s = '$\\alpha$ latex math'
self.assertEqual(
markdown2latex(s, markup='markdown_strict+tex_math_dollars'),
s)
@dec.onlyif_cmds_exist('pandoc')
MinRK
allow passing extra args to pandoc filters...
r17885 def test_pandoc_extra_args(self):
# pass --no-wrap
s = '\n'.join([
Benjamin ABEL
Fix issue #5877 with tests...
r18427 "#latex {{long_line | md2l('markdown', ['--no-wrap'])}}",
MinRK
allow passing extra args to pandoc filters...
r17885 "#rst {{long_line | md2r(['--columns', '5'])}}",
])
long_line = ' '.join(['long'] * 30)
env = Environment()
env.filters.update({
'md2l': markdown2latex,
'md2r': markdown2rst,
})
tpl = env.from_string(s)
rendered = tpl.render(long_line=long_line)
_, latex, rst = rendered.split('#')
Benjamin ABEL
Fix issue #5877 with tests...
r18427
MinRK
allow passing extra args to pandoc filters...
r17885 self.assertEqual(latex.strip(), 'latex %s' % long_line)
self.assertEqual(rst.strip(), 'rst %s' % long_line.replace(' ', '\n'))
Jonathan Frederic
Add new filter tests
r11902 def test_markdown2html(self):
Jonathan Frederic
Shrink header comments
r11934 """markdown2html test"""
Jonathan Frederic
Add new filter tests
r11902 for index, test in enumerate(self.tests):
Thomas Kluyver
Remove ParametricTestCase from nbconvert tests
r12373 self._try_markdown(markdown2html, test, self.tokens[index])
Jonathan Frederic
Add new filter tests
r11902
Thomas Kluyver
Fix mathjax pass-through with mistune
r17259 def test_markdown2html_math(self):
# Mathematical expressions should be passed through unaltered
cases = [("\\begin{equation*}\n"
"\\left( \\sum_{k=1}^n a_k b_k \\right)^2 \\leq \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\n"
"\\end{equation*}"),
("$$\n"
"a = 1 *3* 5\n"
"$$"),
"$ a = 1 *3* 5 $",
]
for case in cases:
self.assertIn(case, markdown2html(case))
Thomas Kluyver
Add failing test for issue #6724
r18395 def test_markdown2html_math_paragraph(self):
# https://github.com/ipython/ipython/issues/6724
a = """Water that is stored in $t$, $s_t$, must equal the storage content of the previous stage,
$s_{t-1}$, plus a stochastic inflow, $I_t$, minus what is being released in $t$, $r_t$.
With $s_0$ defined as the initial storage content in $t=1$, we have"""
self.assertIn(a, markdown2html(a))
Jonathan Frederic
Add new filter tests
r11902
Jonathan Frederic
Use decorator to enable test generation
r11935 @dec.onlyif_cmds_exist('pandoc')
Jonathan Frederic
Add new filter tests
r11902 def test_markdown2rst(self):
Jonathan Frederic
Shrink header comments
r11934 """markdown2rst test"""
Jonathan Frederic
Escape asterik in rst tests
r11920
#Modify token array for rst, escape asterik
tokens = copy(self.tokens)
tokens[0] = r'\*test'
tokens[1] = r'\*\*test'
Jonathan Frederic
Add new filter tests
r11902 for index, test in enumerate(self.tests):
Thomas Kluyver
Remove ParametricTestCase from nbconvert tests
r12373 self._try_markdown(markdown2rst, test, tokens[index])
Jonathan Frederic
Add new filter tests
r11902
Jonathan Frederic
Check for tokens instead of fuzzy output comparison
r11917 def _try_markdown(self, method, test, tokens):
results = method(test)
if isinstance(tokens, string_types):
assert tokens in results
else:
for token in tokens:
assert token in results