# -*- coding: utf-8 -*- """ Python Markdown A Python implementation of John Gruber's Markdown. Documentation: https://python-markdown.github.io/ GitHub: https://github.com/Python-Markdown/markdown/ PyPI: https://pypi.org/project/Markdown/ Started by Manfred Stienstra (http://www.dwerg.net/). Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). Currently maintained by Waylan Limberg (https://github.com/waylan), Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later) Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) Copyright 2004 Manfred Stienstra (the original version) License: BSD (see LICENSE.md for details). """ from unittest import TestSuite from markdown.test_tools import TestCase from ..blocks.test_html_blocks import TestHTMLBlocks from markdown import Markdown from xml.etree.ElementTree import Element class TestMarkdownInHTMLPostProcessor(TestCase): """ Ensure any remaining elements in HTML stash are properly serialized. """ def test_stash_to_string(self): # There should be no known cases where this actually happens so we need to # forcefully pass an `etree` `Element` to the method to ensure proper behavior. element = Element('div') element.text = 'Foo bar.' md = Markdown(extensions=['md_in_html']) result = md.postprocessors['raw_html'].stash_to_string(element) self.assertEqual(result, '
Foo bar.
') class TestDefaultwMdInHTML(TestHTMLBlocks): """ Ensure the md_in_html extension does not break the default behavior. """ default_kwargs = {'extensions': ['md_in_html']} class TestMdInHTML(TestCase): default_kwargs = {'extensions': ['md_in_html']} def test_md1_paragraph(self): self.assertMarkdownRenders( '

*foo*

', '

foo

' ) def test_md1_p_linebreaks(self): self.assertMarkdownRenders( self.dedent( """

*foo*

""" ), self.dedent( """

foo

""" ) ) def test_md1_p_blank_lines(self): self.assertMarkdownRenders( self.dedent( """

*foo*

""" ), self.dedent( """

foo

""" ) ) def test_md1_div(self): self.assertMarkdownRenders( '
*foo*
', self.dedent( """

foo

""" ) ) def test_md1_div_linebreaks(self): self.assertMarkdownRenders( self.dedent( """
*foo*
""" ), self.dedent( """

foo

""" ) ) def test_md1_code_span(self): self.assertMarkdownRenders( self.dedent( """
`

code span

`
""" ), self.dedent( """

<h1>code span</h1>

""" ) ) def test_md1_code_span_oneline(self): self.assertMarkdownRenders( '
`

code span

`
', self.dedent( """

<h1>code span</h1>

""" ) ) def test_md1_code_span_unclosed(self): self.assertMarkdownRenders( self.dedent( """
`

`

""" ), self.dedent( """

<p>

""" ) ) def test_md1_code_span_script_tag(self): self.assertMarkdownRenders( self.dedent( """
`