Skip to content

Commit

Permalink
Port all smarty tests to the new framework
Browse files Browse the repository at this point in the history
  • Loading branch information
mitya57 authored and waylan committed May 16, 2023
1 parent 1aa4c3d commit 965c06c
Show file tree
Hide file tree
Showing 5 changed files with 161 additions and 112 deletions.
32 changes: 0 additions & 32 deletions tests/extensions/smarty.html

This file was deleted.

40 changes: 0 additions & 40 deletions tests/extensions/smarty.txt

This file was deleted.

34 changes: 0 additions & 34 deletions tests/test_extensions.py
Original file line number Diff line number Diff line change
Expand Up @@ -629,37 +629,3 @@ def testTocInHeaders(self):
'</div>\n' # noqa
'<h1 id="toc"><em>[TOC]</em></h1>' # noqa
)


class TestSmarty(unittest.TestCase):
def setUp(self):
config = {
'smarty': [
('smart_angled_quotes', True),
('substitutions', {
'ndash': '\u2013',
'mdash': '\u2014',
'ellipsis': '\u2026',
'left-single-quote': '&sbquo;', # `sb` is not a typo!
'right-single-quote': '&lsquo;',
'left-double-quote': '&bdquo;',
'right-double-quote': '&ldquo;',
'left-angle-quote': '[',
'right-angle-quote': ']',
}),
]
}
self.md = markdown.Markdown(
extensions=['smarty'],
extension_configs=config
)

def testCustomSubstitutions(self):
text = """<< The "Unicode char of the year 2014"
is the 'mdash': ---
Must not be confused with 'ndash' (--) ... >>
"""
correct = """<p>[ The &bdquo;Unicode char of the year 2014&ldquo;
is the &sbquo;mdash&lsquo;: \u2014
Must not be confused with &sbquo;ndash&lsquo; (\u2013) \u2026 ]</p>"""
self.assertEqual(self.md.convert(text), correct)
5 changes: 0 additions & 5 deletions tests/test_legacy.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,11 +156,6 @@ class TestExtensions(LegacyTestCase):

admonition = Kwargs(extensions=['admonition'])

smarty = Kwargs(
extensions=['smarty'],
extension_configs={'smarty': {'smart_angled_quotes': True}}
)


class TestExtensionsExtra(LegacyTestCase):
location = os.path.join(parent_test_dir, 'extensions/extra')
Expand Down
162 changes: 161 additions & 1 deletion tests/test_syntax/extensions/test_smarty.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,170 @@ class TestSmarty(TestCase):

default_kwargs = {'extensions': ['smarty']}

def test_basic(self):
self.assertMarkdownRenders(
"It's fun. What's fun?",
'<p>It&rsquo;s fun. What&rsquo;s fun?</p>'
)
self.assertMarkdownRenders(
'"Isn\'t this fun"? --- she said...',
'<p>&ldquo;Isn&rsquo;t this fun&rdquo;? &mdash; she said&hellip;</p>'
)
self.assertMarkdownRenders(
'"\'Quoted\' words in a larger quote."',
'<p>&ldquo;&lsquo;Quoted&rsquo; words in a larger quote.&rdquo;</p>'
)
self.assertMarkdownRenders(
'\'Quoted "words" in a larger quote.\'',
'<p>&lsquo;Quoted &ldquo;words&rdquo; in a larger quote.&rsquo;</p>'
)
self.assertMarkdownRenders(
'"quoted" text and **bold "quoted" text**',
'<p>&ldquo;quoted&rdquo; text and <strong>bold &ldquo;quoted&rdquo; text</strong></p>'
)
self.assertMarkdownRenders(
"'quoted' text and **bold 'quoted' text**",
'<p>&lsquo;quoted&rsquo; text and <strong>bold &lsquo;quoted&rsquo; text</strong></p>'
)
self.assertMarkdownRenders(
'em-dashes (---) and ellipes (...)',
'<p>em-dashes (&mdash;) and ellipes (&hellip;)</p>'
)
self.assertMarkdownRenders(
'"[Link](http://example.com)" --- she said.',
'<p>&ldquo;<a href="http://example.com">Link</a>&rdquo; &mdash; she said.</p>'
)
self.assertMarkdownRenders(
'"Ellipsis within quotes..."',
'<p>&ldquo;Ellipsis within quotes&hellip;&rdquo;</p>'
)

def test_years(self):
self.assertMarkdownRenders("1440--80's", '<p>1440&ndash;80&rsquo;s</p>')
self.assertMarkdownRenders("1440--'80s", '<p>1440&ndash;&rsquo;80s</p>')
self.assertMarkdownRenders("1440---'80s", '<p>1440&mdash;&rsquo;80s</p>')
self.assertMarkdownRenders("1960's", '<p>1960&rsquo;s</p>')
self.assertMarkdownRenders("one two '60s", '<p>one two &rsquo;60s</p>')
self.assertMarkdownRenders("'60s", '<p>&rsquo;60s</p>')

def test_wrapping_line(self):
text = (
"A line that 'wraps' with\n"
"*emphasis* at the beginning of the next line."
)
html = (
'<p>A line that &lsquo;wraps&rsquo; with\n'
'<em>emphasis</em> at the beginning of the next line.</p>'
)
self.assertMarkdownRenders(text, html)

def test_escaped(self):
self.assertMarkdownRenders(
'Escaped \\-- ndash',
'<p>Escaped -- ndash</p>'
)
self.assertMarkdownRenders(
'\\\'Escaped\\\' \\"quotes\\"',
'<p>\'Escaped\' "quotes"</p>'
)
self.assertMarkdownRenders(
'Escaped ellipsis\\...',
'<p>Escaped ellipsis...</p>'
)
self.assertMarkdownRenders(
'\'Escaped \\"quotes\\" in real ones\'',
'<p>&lsquo;Escaped "quotes" in real ones&rsquo;</p>'
)
self.assertMarkdownRenders(
'\\\'"Real" quotes in escaped ones\\\'',
"<p>'&ldquo;Real&rdquo; quotes in escaped ones'</p>"
)

def test_escaped_attr(self):
self.assertMarkdownRenders(
'![x\"x](x)',
'<p><img alt="x&quot;x" src="x" /></p>'
)

# TODO: Move rest of smarty tests here.
def test_code_spans(self):
self.assertMarkdownRenders(
'Skip `"code" -- --- \'spans\' ...`.',
'<p>Skip <code>"code" -- --- \'spans\' ...</code>.</p>'
)

def test_code_blocks(self):
text = (
' Also skip "code" \'blocks\'\n'
' foo -- bar --- baz ...'
)
html = (
'<pre><code>Also skip "code" \'blocks\'\n'
'foo -- bar --- baz ...\n'
'</code></pre>'
)
self.assertMarkdownRenders(text, html)

def test_horizontal_rule(self):
self.assertMarkdownRenders('--- -- ---', '<hr />')


class TestSmartyAngledQuotes(TestCase):

default_kwargs = {
'extensions': ['smarty'],
'extension_configs': {
'smarty': {
'smart_angled_quotes': True,
},
},
}

def test_angled_quotes(self):
self.assertMarkdownRenders(
'<<hello>>',
'<p>&laquo;hello&raquo;</p>'
)
self.assertMarkdownRenders(
'Кавычки-<<ёлочки>>',
'<p>Кавычки-&laquo;ёлочки&raquo;</p>'
)
self.assertMarkdownRenders(
'Anführungszeichen->>Chevrons<<',
'<p>Anführungszeichen-&raquo;Chevrons&laquo;</p>'
)


class TestSmartyCustomSubstitutions(TestCase):

default_kwargs = {
'extensions': ['smarty'],
'extension_configs': {
'smarty': {
'smart_angled_quotes': True,
'substitutions': {
'ndash': '\u2013',
'mdash': '\u2014',
'ellipsis': '\u2026',
'left-single-quote': '&sbquo;', # `sb` is not a typo!
'right-single-quote': '&lsquo;',
'left-double-quote': '&bdquo;',
'right-double-quote': '&ldquo;',
'left-angle-quote': '[',
'right-angle-quote': ']',
},
},
},
}

def test_custom_substitutions(self):
text = (
'<< The "Unicode char of the year 2014"\n'
"is the 'mdash': ---\n"
"Must not be confused with 'ndash' (--) ... >>"
)
html = (
'<p>[ The &bdquo;Unicode char of the year 2014&ldquo;\n'
'is the &sbquo;mdash&lsquo;: \u2014\n'
'Must not be confused with &sbquo;ndash&lsquo; (\u2013) \u2026 ]</p>'
)
self.assertMarkdownRenders(text, html)

0 comments on commit 965c06c

Please sign in to comment.