""" 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 markdown.test_tools import TestCase class TestFootnotes(TestCase): default_kwargs = {'extensions': ['footnotes']} maxDiff = None def test_basic_footnote(self): self.assertMarkdownRenders( self.dedent( """ paragraph[^1] [^1]: A Footnote """ ), '

paragraph1

\n' '
\n' '
\n' '
    \n' '
  1. \n' '

    A Footnote 

    \n' '
  2. \n' '
\n' '
' ) def test_multiple_footnotes(self): self.assertMarkdownRenders( self.dedent( """ foo[^1] bar[^2] [^1]: Footnote 1 [^2]: Footnote 2 """ ), '

foo1

\n' '

bar2

\n' '
\n' '
\n' '
    \n' '
  1. \n' '

    Footnote 1 

    \n' '
  2. \n' '
  3. \n' '

    Footnote 2 

    \n' '
  4. \n' '
\n' '
' ) def test_multiple_footnotes_multiline(self): self.assertMarkdownRenders( self.dedent( """ foo[^1] bar[^2] [^1]: Footnote 1 line 2 [^2]: Footnote 2 """ ), '

foo1

\n' '

bar2

\n' '
\n' '
\n' '
    \n' '
  1. \n' '

    Footnote 1\nline 2 

    \n' '
  2. \n' '
  3. \n' '

    Footnote 2 

    \n' '
  4. \n' '
\n' '
' ) def test_footnote_multi_line(self): self.assertMarkdownRenders( self.dedent( """ paragraph[^1] [^1]: A Footnote line 2 """ ), '

paragraph1

\n' '
\n' '
\n' '
    \n' '
  1. \n' '

    A Footnote\nline 2 

    \n' '
  2. \n' '
\n' '
' ) def test_footnote_multi_line_lazy_indent(self): self.assertMarkdownRenders( self.dedent( """ paragraph[^1] [^1]: A Footnote line 2 """ ), '

paragraph1

\n' '
\n' '
\n' '
    \n' '
  1. \n' '

    A Footnote\nline 2 

    \n' '
  2. \n' '
\n' '
' ) def test_footnote_multi_line_complex(self): self.assertMarkdownRenders( self.dedent( """ paragraph[^1] [^1]: A Footnote line 2 * list item > blockquote """ ), '

paragraph1

\n' '
\n' '
\n' '
    \n' '
  1. \n' '

    A Footnote\nline 2

    \n' '
      \n
    • list item
    • \n
    \n' '
    \n

    blockquote

    \n
    \n' '

    \n' '
  2. \n' '
\n' '
' ) def test_footnote_multple_complex(self): self.assertMarkdownRenders( self.dedent( """ foo[^1] bar[^2] [^1]: A Footnote line 2 * list item > blockquote [^2]: Second footnote paragraph 2 """ ), '

foo1

\n' '

bar2

\n' '
\n' '
\n' '
    \n' '
  1. \n' '

    A Footnote\nline 2

    \n' '
      \n
    • list item
    • \n
    \n' '
    \n

    blockquote

    \n
    \n' '

    \n' '
  2. \n' '
  3. \n' '

    Second footnote

    \n' '

    paragraph 2 

    \n' '
  4. \n' '
\n' '
' ) def test_footnote_multple_complex_no_blank_line_between(self): self.assertMarkdownRenders( self.dedent( """ foo[^1] bar[^2] [^1]: A Footnote line 2 * list item > blockquote [^2]: Second footnote paragraph 2 """ ), '

foo1

\n' '

bar2

\n' '
\n' '
\n' '
    \n' '
  1. \n' '

    A Footnote\nline 2

    \n' '
      \n
    • list item
    • \n
    \n' '
    \n

    blockquote

    \n
    \n' '

    \n' '
  2. \n' '
  3. \n' '

    Second footnote

    \n' '

    paragraph 2 

    \n' '
  4. \n' '
\n' '
' ) def test_backlink_text(self): """Test back-link configuration.""" self.assertMarkdownRenders( 'paragraph[^1]\n\n[^1]: A Footnote', '

paragraph1

\n' '
\n' '
\n' '
    \n' '
  1. \n' '

    A Footnote back

    \n' '
  2. \n' '
\n' '
', extension_configs={'footnotes': {'BACKLINK_TEXT': 'back'}} ) def test_footnote_separator(self): """Test separator configuration.""" self.assertMarkdownRenders( 'paragraph[^1]\n\n[^1]: A Footnote', '

paragraph1

\n' '
\n' '
\n' '
    \n' '
  1. \n' '

    A Footnote 

    \n' '
  2. \n' '
\n' '
', extension_configs={'footnotes': {'SEPARATOR': '-'}} ) def test_backlink_title(self): """Test back-link title configuration without placeholder.""" self.assertMarkdownRenders( 'paragraph[^1]\n\n[^1]: A Footnote', '

paragraph1

\n' '
\n' '
\n' '
    \n' '
  1. \n' '

    A Footnote 

    \n' '
  2. \n' '
\n' '
', extension_configs={'footnotes': {'BACKLINK_TITLE': 'Jump back to footnote'}} ) def test_superscript_text(self): """Test superscript text configuration.""" self.assertMarkdownRenders( 'paragraph[^1]\n\n[^1]: A Footnote', '

paragraph[1]

\n' '
\n' '
\n' '
    \n' '
  1. \n' '

    A Footnote 

    \n' '
  2. \n' '
\n' '
', extension_configs={'footnotes': {'SUPERSCRIPT_TEXT': '[{}]'}} )