Ejemplo n.º 1
0
 def test_mathjax_asciimath(self):
     markup = MarkdownMarkup(extensions=['mdx_math(use_asciimath=1)'])
     converted = markup.convert('\( [[a,b],[c,d]] \)')
     body = converted.get_document_body()
     self.assertIn('<script type="math/asciimath">', body)
     self.assertIn('<script type="text/javascript"',
                   converted.get_javascript())
Ejemplo n.º 2
0
	def test_codehilite_custom_class(self):
		markup = MarkdownMarkup(extensions=["codehilite(css_class=myclass)"])
		converted = markup.convert('    :::python\n    import foo')
		stylesheet = converted.get_stylesheet()
		self.assertIn(".myclass .k {", stylesheet)
		body = converted.get_document_body()
		self.assertIn('<div class="myclass">', body)
Ejemplo n.º 3
0
	def test_meta(self):
		markup = MarkdownMarkup()
		text = ('Required-Extensions: meta\n'
		        'Title: Hello, world!\n\n'
		        'Some text here.')
		title = markup.convert(text).get_document_title()
		self.assertEqual('Hello, world!', title)
Ejemplo n.º 4
0
	def test_loading_extensions_by_module_name(self):
		markup = MarkdownMarkup(extensions=['markdown.extensions.footnotes'])
		source = ('Footnotes[^1] have a label and the content.\n\n'
		          '[^1]: This is a footnote content.')
		html = markup.convert(source).get_document_body()
		self.assertIn('<sup', html)
		self.assertIn('footnote-backref', html)
Ejemplo n.º 5
0
	def test_extensions_parameters(self):
		markup = MarkdownMarkup(extensions=['toc(anchorlink=1)'])
		html = markup.convert('## Header').get_document_body()
		self.assertEqual(html,
			'<h2 id="header"><a class="toclink" href="#header">Header</a></h2>\n')
		self.assertEqual(_canonicalized_ext_names['toc(anchorlink=1)'],
			'markdown.extensions.toc(anchorlink=1)')
Ejemplo n.º 6
0
	def test_loading_extensions_by_module_name(self):
		markup = MarkdownMarkup(extensions=['markdown.extensions.footnotes'])
		source = ('Footnotes[^1] have a label and the content.\n\n'
		          '[^1]: This is a footnote content.')
		html = markup.convert(source).get_document_body()
		self.assertIn('<sup', html)
		self.assertIn('footnote-backref', html)
Ejemplo n.º 7
0
	def test_extensions_yaml_file(self):
		with TemporaryDirectory() as tmpdirname:
			yamlfilename = join(tmpdirname, "markdown-extensions.yaml")
			with open(yamlfilename, "w") as f:
				f.write('- smarty:\n'
				        '    substitutions:\n'
				        '      left-single-quote: "&sbquo;"\n'
				        '      right-single-quote: "&lsquo;"\n'
				        '    smart_dashes: False\n'
				        '- toc:\n'
				        '    permalink: True\n'
				        '    separator: "_"\n'
				        '    toc_depth: 3\n'
				        '- sane_lists\n')
			markup = MarkdownMarkup(filename=join(tmpdirname, "foo.md"))
		self.assertEqual(
			markup.global_extensions,
			[("smarty", {"substitutions": {"left-single-quote": "&sbquo;",
			                               "right-single-quote": "&lsquo;"},
			  "smart_dashes": False}),
			 ("toc", {"permalink": True, "separator": "_", "toc_depth": 3}),
			 ("sane_lists", {}),
			])
		converted = markup.convert("'foo' -- bar")
		body = converted.get_document_body()
		self.assertEqual(body, '<p>&sbquo;foo&lsquo; -- bar</p>\n')
Ejemplo n.º 8
0
	def test_meta(self):
		markup = MarkdownMarkup()
		text = ('Required-Extensions: meta\n'
		        'Title: Hello, world!\n\n'
		        'Some text here.')
		title = markup.convert(text).get_document_title()
		self.assertEqual('Hello, world!', title)
Ejemplo n.º 9
0
	def test_pymdownx_highlight_custom_class(self):
		markup = MarkdownMarkup(extensions=["pymdownx.highlight(css_class=myclass)"])
		converted = markup.convert('    import foo')
		stylesheet = converted.get_stylesheet()
		self.assertIn(".myclass .k {", stylesheet)
		body = converted.get_document_body()
		self.assertIn('<div class="myclass">', body)
Ejemplo n.º 10
0
	def test_mathjax(self):
		markup = MarkdownMarkup(extensions=['mathjax'])
		# Escaping should work
		self.assertEqual('', markup.convert('Hello, \\$2+2$!').get_javascript())
		js = markup.convert(mathjax_source).get_javascript()
		self.assertIn('<script', js)
		body = markup.convert(mathjax_source).get_document_body()
		self.assertEqual(mathjax_output, body)
Ejemplo n.º 11
0
 def test_default_math(self):
     # by default $...$ delimeter should be disabled
     markup = MarkdownMarkup(extensions=[])
     self.assertEqual('<p>$1$</p>\n',
                      markup.convert('$1$').get_document_body())
     self.assertEqual(
         '<p>\n<script type="math/tex; mode=display">1</script>\n</p>\n',
         markup.convert('$$1$$').get_document_body())
Ejemplo n.º 12
0
	def test_extensions_file(self):
		f = NamedTemporaryFile(mode="w", delete=False)
		f.write("foo\n# bar\nbaz\n")
		f.close()
		markup = MarkdownMarkup()
		extensions = markup._load_extensions_list_from_file(f.name)
		self.assertEqual(extensions, ["foo", "baz"])
		remove(f.name)
Ejemplo n.º 13
0
	def test_mathjax(self):
		markup = MarkdownMarkup(extensions=['mathjax'])
		# Escaping should work
		self.assertEqual('', markup.convert('Hello, \\$2+2$!').get_javascript())
		js = markup.convert(mathjax_source).get_javascript()
		self.assertIn('<script', js)
		body = markup.convert(mathjax_source).get_document_body()
		self.assertEqual(mathjax_output, body)
Ejemplo n.º 14
0
 def test_extensions_parameters(self):
     markup = MarkdownMarkup(extensions=['toc(anchorlink=1)'])
     html = markup.convert('## Header').get_document_body()
     self.assertEqual(
         html,
         '<h2 id="header"><a class="toclink" href="#header">Header</a></h2>\n'
     )
     self.assertEqual(_canonicalized_ext_names['toc'],
                      'markdown.extensions.toc')
Ejemplo n.º 15
0
	def test_document_extensions_change(self):
		"""Extensions from document should be replaced on each run, not added."""
		markup = MarkdownMarkup(extensions=[])
		toc_header = '<!-- Required extensions: toc -->\n\n'
		content = '[TOC]\n\n# Header'
		html = markup.convert(toc_header + content).get_document_body()
		self.assertNotIn('<p>[TOC]</p>', html)
		html = markup.convert(content).get_document_body()
		self.assertIn('<p>[TOC]</p>', html)
		html = markup.convert(toc_header + content).get_document_body()
		self.assertNotIn('<p>[TOC]</p>', html)
Ejemplo n.º 16
0
	def test_document_extensions_parameters(self):
		markup = MarkdownMarkup(extensions=[])
		toc_header = '<!--- Required extensions: toc(anchorlink=1) --->\n\n'
		html = markup.convert(toc_header + '## Header').get_document_body()
		self.assertEqual(html, toc_header +
			'<h2 id="header"><a class="toclink" href="#header">Header</a></h2>\n')
		toc_header = '<!--- Required extensions: toc(title=Table of contents, baselevel=3) wikilinks --->\n\n'
		html = markup.convert(toc_header + '[TOC]\n\n# Header\n[[Link]]').get_document_body()
		self.assertEqual(html, toc_header +
			'<div class="toc"><span class="toctitle">Table of contents</span><ul>\n'
			'<li><a href="#header">Header</a></li>\n'
			'</ul>\n</div>\n'
			'<h3 id="header">Header</h3>\n'
			'<p><a class="wikilink" href="/Link/">Link</a></p>\n')
Ejemplo n.º 17
0
	def test_document_extensions_parameters(self):
		markup = MarkdownMarkup(extensions=[])
		toc_header = '<!--- Required extensions: toc(anchorlink=1) --->\n\n'
		html = markup.convert(toc_header + '## Header').get_document_body()
		self.assertEqual(html, toc_header +
			'<h2 id="header"><a class="toclink" href="#header">Header</a></h2>\n')
		toc_header = '<!--- Required extensions: toc(title=Table of contents, baselevel=3) wikilinks --->\n\n'
		html = markup.convert(toc_header + '[TOC]\n\n# Header\n[[Link]]').get_document_body()
		self.assertEqual(html, toc_header +
			'<div class="toc"><span class="toctitle">Table of contents</span><ul>\n'
			'<li><a href="#header">Header</a></li>\n'
			'</ul>\n</div>\n'
			'<h3 id="header">Header</h3>\n'
			'<p><a class="wikilink" href="/Link/">Link</a></p>\n')
Ejemplo n.º 18
0
	def test_extensions_txt_file(self):
		with TemporaryDirectory() as tmpdirname:
			txtfilename = join(tmpdirname, "markdown-extensions.txt")
			with open(txtfilename, "w") as f:
				f.write("foo\n# bar\nbaz(arg=value)\n")
			markup = MarkdownMarkup(filename=join(tmpdirname, "foo.md"))
		self.assertEqual(markup.global_extensions,
		                 [("foo", {}), ("baz", {"arg": "value"})])
Ejemplo n.º 19
0
	def test_extensions_yaml_file_invalid(self):
		with TemporaryDirectory() as tmpdirname:
			yamlfilename = join(tmpdirname, "markdown-extensions.yaml")
			with open(yamlfilename, "w") as f:
				f.write('[this is an invalid YAML file')
			with self.assertWarns(SyntaxWarning) as cm:
				MarkdownMarkup(filename=join(tmpdirname, "foo.md"))
			self.assertIn("Failed parsing", str(cm.warning))
			self.assertIn("expected ',' or ']'", str(cm.warning))
Ejemplo n.º 20
0
	def test_extensions_loading(self):
		markup = MarkdownMarkup()
		self.assertIsNone(markup._canonicalize_extension_name('nonexistent'))
		self.assertIsNone(markup._canonicalize_extension_name('nonexistent(someoption)'))
		self.assertIsNone(markup._canonicalize_extension_name('.foobar'))
		self.assertEqual(markup._canonicalize_extension_name('meta'), 'markdown.extensions.meta')
		name, parameters = markup._split_extension_config('toc(anchorlink=1, foo=bar)')
		self.assertEqual(name, 'toc')
		self.assertEqual(parameters, {'anchorlink': '1', 'foo': 'bar'})
Ejemplo n.º 21
0
	def test_extensions_loading(self):
		markup = MarkdownMarkup()
		self.assertIsNone(markup._canonicalize_extension_name('nonexistent'))
		self.assertIsNone(markup._canonicalize_extension_name('nonexistent(someoption)'))
		self.assertIsNone(markup._canonicalize_extension_name('.foobar'))
		self.assertEqual(markup._canonicalize_extension_name('meta'), 'markdown.extensions.meta')
		self.assertEqual(markup._canonicalize_extension_name('meta(someoption)'),
			'markdown.extensions.meta(someoption)')
Ejemplo n.º 22
0
	def test_mathjax_document_extension(self):
		markup = MarkdownMarkup()
		text = mathjax_header + mathjax_source
		body = markup.convert(text).get_document_body()
		self.assertEqual(mathjax_header + mathjax_output, body)
Ejemplo n.º 23
0
	def test_remove_extra(self):
		markup = MarkdownMarkup(extensions=['remove_extra'])
		html = markup.convert(tables_source).get_document_body()
		self.assertNotIn('<table>', html)
Ejemplo n.º 24
0
	def test_remove_extra_document_extension(self):
		markup = MarkdownMarkup(extensions=[])
		html = markup.convert(
			'Required-Extensions: remove_extra\n\n' +
			tables_source).get_document_body()
		self.assertNotIn('<table>', html)
Ejemplo n.º 25
0
	def test_remove_extra_removes_mathjax(self):
		markup = MarkdownMarkup(extensions=['remove_extra'])
		html = markup.convert('$$1$$').get_document_body()
		self.assertNotIn('math/tex', html)
Ejemplo n.º 26
0
	def test_mathjax_multiline(self):
		markup = MarkdownMarkup(extensions=['mathjax'])
		body = markup.convert(mathjax_multiline_source).get_document_body()
		self.assertEqual(mathjax_multiline_output, body)
Ejemplo n.º 27
0
	def test_not_loading_sys(self):
		with self.assertWarnsRegex(ImportWarning, 'Extension "sys" does not exist.'):
			markup = MarkdownMarkup(extensions=['sys'])
		self.assertNotIn('sys', markup.extensions)
Ejemplo n.º 28
0
	def test_extra(self):
		markup = MarkdownMarkup()
		html = markup.convert(tables_source).get_document_body()
		self.assertEqual(tables_output, html)
		html = markup.convert(deflists_source).get_document_body()
		self.assertEqual(deflists_output, html)
Ejemplo n.º 29
0
	def test_remove_extra_removes_mathjax(self):
		markup = MarkdownMarkup(extensions=['remove_extra'])
		html = markup.convert('$$1$$').get_document_body()
		self.assertNotIn('math/tex', html)
Ejemplo n.º 30
0
	def test_default_math(self):
		# by default $...$ delimeter should be disabled
		markup = MarkdownMarkup(extensions=[])
		self.assertEqual('<p>$1$</p>\n', markup.convert('$1$').get_document_body())
		self.assertEqual('<p>\n<script type="math/tex; mode=display">1</script>\n</p>\n',
			markup.convert('$$1$$').get_document_body())
Ejemplo n.º 31
0
	def test_removing_duplicate_extensions(self):
		markup = MarkdownMarkup(extensions=['remove_extra', 'toc', 'markdown.extensions.toc'])
		self.assertEqual(len(markup.extensions), 1)
		self.assertIn('markdown.extensions.toc', markup.extensions)
Ejemplo n.º 32
0
	def test_mathjax_document_extension(self):
		markup = MarkdownMarkup()
		text = mathjax_header + mathjax_source
		body = markup.convert(text).get_document_body()
		self.assertEqual(mathjax_header + mathjax_output, body)
Ejemplo n.º 33
0
	def test_empty_file(self):
		markup = MarkdownMarkup()
		self.assertEqual(markup.convert('').get_document_body(), '\n')
Ejemplo n.º 34
0
	def test_mathjax_multiline(self):
		markup = MarkdownMarkup(extensions=['mathjax'])
		body = markup.convert(mathjax_multiline_source).get_document_body()
		self.assertEqual(mathjax_multiline_output, body)
Ejemplo n.º 35
0
	def test_remove_extra(self):
		markup = MarkdownMarkup(extensions=['remove_extra'])
		html = markup.convert(tables_source).get_document_body()
		self.assertNotIn('<table>', html)
Ejemplo n.º 36
0
	def test_mathjax_multilevel(self):
		markup = MarkdownMarkup()
		body = markup.convert(mathjax_multilevel_source).get_document_body()
		self.assertEqual(mathjax_multilevel_output, body)
Ejemplo n.º 37
0
	def test_remove_extra_document_extension(self):
		markup = MarkdownMarkup(extensions=[])
		html = markup.convert(
			'Required-Extensions: remove_extra\n\n' +
			tables_source).get_document_body()
		self.assertNotIn('<table>', html)
Ejemplo n.º 38
0
	def test_extra(self):
		markup = MarkdownMarkup()
		html = markup.convert(tables_source).get_document_body()
		self.assertEqual(tables_output, html)
		html = markup.convert(deflists_source).get_document_body()
		self.assertEqual(deflists_output, html)
Ejemplo n.º 39
0
	def test_remove_extra_double(self):
		"""Removing extra twice should not cause a crash."""
		markup = MarkdownMarkup(extensions=['remove_extra'])
		markup.convert('Required-Extensions: remove_extra\n')
Ejemplo n.º 40
0
  \end{pmatrix}
\end{equation*}
'''

mathjax_multilevel_output = \
r'''<p>
<script type="math/tex; mode=display">\begin{equation*}
  \begin{pmatrix}
    1 & 0\\
    0 & 1
  \end{pmatrix}
\end{equation*}</script>
</p>
'''

@unittest.skipUnless(MarkdownMarkup.available(), 'Markdown not available')
class MarkdownTest(unittest.TestCase):
	maxDiff = None

	def setUp(self):
		warnings.simplefilter("ignore", Warning)

	def test_empty_file(self):
		markup = MarkdownMarkup()
		self.assertEqual(markup.convert('').get_document_body(), '\n')

	def test_extensions_loading(self):
		markup = MarkdownMarkup()
		self.assertIsNone(markup._canonicalize_extension_name('nonexistent'))
		self.assertIsNone(markup._canonicalize_extension_name('nonexistent(someoption)'))
		self.assertIsNone(markup._canonicalize_extension_name('.foobar'))
Ejemplo n.º 41
0
	def test_mathjax_multilevel(self):
		markup = MarkdownMarkup()
		body = markup.convert(mathjax_multilevel_source).get_document_body()
		self.assertEqual(mathjax_multilevel_output, body)
Ejemplo n.º 42
0
	def test_empty_file(self):
		markup = MarkdownMarkup()
		self.assertEqual(markup.convert('').get_document_body(), '\n')
Ejemplo n.º 43
0
  \end{pmatrix}
\end{equation*}
'''

mathjax_multilevel_output = \
r'''<p>
<script type="math/tex; mode=display">\begin{equation*}
  \begin{pmatrix}
    1 & 0\\
    0 & 1
  \end{pmatrix}
\end{equation*}</script>
</p>
'''

@unittest.skipUnless(MarkdownMarkup.available(), 'Markdown not available')
class MarkdownTest(unittest.TestCase):
	maxDiff = None

	def setUp(self):
		warnings.simplefilter("ignore", Warning)

	def test_empty_file(self):
		markup = MarkdownMarkup()
		self.assertEqual(markup.convert('').get_document_body(), '\n')

	def test_extensions_loading(self):
		markup = MarkdownMarkup()
		self.assertIsNone(markup._canonicalize_extension_name('nonexistent'))
		self.assertIsNone(markup._canonicalize_extension_name('nonexistent(someoption)'))
		self.assertIsNone(markup._canonicalize_extension_name('.foobar'))