diff --git a/tests/extensions/smarty.html b/tests/extensions/smarty.html deleted file mode 100644 index e37e377f9..000000000 --- a/tests/extensions/smarty.html +++ /dev/null @@ -1,32 +0,0 @@ -
’.
-1440–80’s
-1440–’80s
-1440—’80s
-1960s
-1960’s
-one two ’60s
-’60s
It’s fun. What’s fun?
-“Isn’t this fun”? — she said…
-“‘Quoted’ words in a larger quote.”
-‘Quoted “words” in a larger quote.’
-“quoted” text and bold “quoted” text
-‘quoted’ text and bold ‘quoted’ text
-em-dashes (—) and ellipes (…)
-“Link” — she said.
“Ellipsis within quotes…”
-Кавычки-«ёлочки»
-«hello»
-Anführungszeichen-»Chevrons«
Escaped -- ndash
-'Escaped' "quotes"
-Escaped ellipsis...
‘Escaped "quotes" in real ones’
-'“Real” quotes in escaped ones'
Skip <<all>> "code" -- --- 'spans' ...
.
Also skip "code" 'blocks'
-foo -- bar --- baz ...
-
-A line that ‘wraps’ with -emphasis at the beginning of the next line.
\ No newline at end of file diff --git a/tests/extensions/smarty.txt b/tests/extensions/smarty.txt deleted file mode 100644 index 12e5c9537..000000000 --- a/tests/extensions/smarty.txt +++ /dev/null @@ -1,40 +0,0 @@ -'. -1440--80's -1440--'80s -1440---'80s -1960s -1960's -one two '60s -'60s - -It's fun. What's fun? -"Isn't this fun"? --- she said... -"'Quoted' words in a larger quote." -'Quoted "words" in a larger quote.' -"quoted" text and **bold "quoted" text** -'quoted' text and **bold 'quoted' text** -em-dashes (---) and ellipes (...) -"[Link](http://example.com)" --- she said. - -"Ellipsis within quotes..." - -Кавычки-<<ёлочки>> -<[ The „Unicode char of the year 2014“ -is the ‚mdash‘: \u2014 -Must not be confused with ‚ndash‘ (\u2013) \u2026 ]
""" - self.assertEqual(self.md.convert(text), correct) diff --git a/tests/test_legacy.py b/tests/test_legacy.py index 30b6c182f..295588b0a 100644 --- a/tests/test_legacy.py +++ b/tests/test_legacy.py @@ -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') diff --git a/tests/test_syntax/extensions/test_smarty.py b/tests/test_syntax/extensions/test_smarty.py index fc635ad3d..f2d074dd7 100644 --- a/tests/test_syntax/extensions/test_smarty.py +++ b/tests/test_syntax/extensions/test_smarty.py @@ -27,10 +27,170 @@ class TestSmarty(TestCase): default_kwargs = {'extensions': ['smarty']} + def test_basic(self): + self.assertMarkdownRenders( + "It's fun. What's fun?", + 'It’s fun. What’s fun?
' + ) + self.assertMarkdownRenders( + '"Isn\'t this fun"? --- she said...', + '“Isn’t this fun”? — she said…
' + ) + self.assertMarkdownRenders( + '"\'Quoted\' words in a larger quote."', + '“‘Quoted’ words in a larger quote.”
' + ) + self.assertMarkdownRenders( + '\'Quoted "words" in a larger quote.\'', + '‘Quoted “words” in a larger quote.’
' + ) + self.assertMarkdownRenders( + '"quoted" text and **bold "quoted" text**', + '“quoted” text and bold “quoted” text
' + ) + self.assertMarkdownRenders( + "'quoted' text and **bold 'quoted' text**", + '‘quoted’ text and bold ‘quoted’ text
' + ) + self.assertMarkdownRenders( + 'em-dashes (---) and ellipes (...)', + 'em-dashes (—) and ellipes (…)
' + ) + self.assertMarkdownRenders( + '"[Link](http://example.com)" --- she said.', + '“Link” — she said.
' + ) + self.assertMarkdownRenders( + '"Ellipsis within quotes..."', + '“Ellipsis within quotes…”
' + ) + + def test_years(self): + self.assertMarkdownRenders("1440--80's", '1440–80’s
') + self.assertMarkdownRenders("1440--'80s", '1440–’80s
') + self.assertMarkdownRenders("1440---'80s", '1440—’80s
') + self.assertMarkdownRenders("1960's", '1960’s
') + self.assertMarkdownRenders("one two '60s", 'one two ’60s
') + self.assertMarkdownRenders("'60s", '’60s
') + + def test_wrapping_line(self): + text = ( + "A line that 'wraps' with\n" + "*emphasis* at the beginning of the next line." + ) + html = ( + 'A line that ‘wraps’ with\n' + 'emphasis at the beginning of the next line.
' + ) + self.assertMarkdownRenders(text, html) + + def test_escaped(self): + self.assertMarkdownRenders( + 'Escaped \\-- ndash', + 'Escaped -- ndash
' + ) + self.assertMarkdownRenders( + '\\\'Escaped\\\' \\"quotes\\"', + '\'Escaped\' "quotes"
' + ) + self.assertMarkdownRenders( + 'Escaped ellipsis\\...', + 'Escaped ellipsis...
' + ) + self.assertMarkdownRenders( + '\'Escaped \\"quotes\\" in real ones\'', + '‘Escaped "quotes" in real ones’
' + ) + self.assertMarkdownRenders( + '\\\'"Real" quotes in escaped ones\\\'', + "'“Real” quotes in escaped ones'
" + ) + def test_escaped_attr(self): self.assertMarkdownRenders( '![x\"x](x)', '' ) - # TODO: Move rest of smarty tests here. + def test_code_spans(self): + self.assertMarkdownRenders( + 'Skip `"code" -- --- \'spans\' ...`.', + 'Skip "code" -- --- \'spans\' ...
.
Also skip "code" \'blocks\'\n'
+ 'foo -- bar --- baz ...\n'
+ '
'
+ )
+ self.assertMarkdownRenders(text, html)
+
+ def test_horizontal_rule(self):
+ self.assertMarkdownRenders('--- -- ---', '«hello»
' + ) + self.assertMarkdownRenders( + 'Кавычки-<<ёлочки>>', + 'Кавычки-«ёлочки»
' + ) + self.assertMarkdownRenders( + 'Anführungszeichen->>Chevrons<<', + 'Anführungszeichen-»Chevrons«
' + ) + + +class TestSmartyCustomSubstitutions(TestCase): + + default_kwargs = { + 'extensions': ['smarty'], + 'extension_configs': { + 'smarty': { + 'smart_angled_quotes': True, + 'substitutions': { + 'ndash': '\u2013', + 'mdash': '\u2014', + 'ellipsis': '\u2026', + 'left-single-quote': '‚', # `sb` is not a typo! + 'right-single-quote': '‘', + 'left-double-quote': '„', + 'right-double-quote': '“', + '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 = ( + '[ The „Unicode char of the year 2014“\n' + 'is the ‚mdash‘: \u2014\n' + 'Must not be confused with ‚ndash‘ (\u2013) \u2026 ]
' + ) + self.assertMarkdownRenders(text, html)