pypa / readme_renderer

Safely render long_description/README files in Warehouse
Apache License 2.0
158 stars 88 forks source link

Add cmarkgfm==0.7.0 compatibility #221

Closed mweinelt closed 2 years ago

mweinelt commented 2 years ago

On readme_renderer 32.0 two new test failures can be seen when upgrading cmarkgfm to 0.7.0.

=================================== FAILURES ===================================
_ test_md_fixtures[/build/readme_renderer-32.0/tests/fixtures/test_GFM_doublequotes.md-/build/readme_renderer-32.0/tests/fixtures/test_GFM_doublequotes.html-GFM] _

md_filename = '/build/readme_renderer-32.0/tests/fixtures/test_GFM_doublequotes.md'
html_filename = '/build/readme_renderer-32.0/tests/fixtures/test_GFM_doublequotes.html'
variant = 'GFM'

    @pytest.mark.parametrize(
        ("md_filename", "html_filename", "variant"),
        MD_FIXTURES,
    )
    def test_md_fixtures(md_filename, html_filename, variant):
        # Get our Markup
        with io.open(md_filename, encoding='utf-8') as f:
            md_markup = f.read()

        # Get our expected
        with io.open(html_filename, encoding="utf-8") as f:
            expected = f.read()

>       assert render(md_markup, variant=variant) == expected
E       assert ('<p>This is normal text.</p>\n'\n '<pre><code>This is code text.\n'\n '</code></pre>\n'\n '<pre><span class="k">def</span> <span class="nf">this_is_python</span><span '\n 'class="p">():</span>\n'\n '    <span class="sd">&quot;&quot;&quot;This is a '\n 'docstring.&quot;&quot;&quot;</span>\n'\n '    <span class="k">pass</span>\n'\n '</pre>\n'\n '<pre><span class="kd">func</span><span class="w"> </span><span '\n 'class="nx">ThisIsGo</span><span class="p">(){</span><span class="w"></span>\n'\n '<span class="w">    </span><span class="k">return</span><span '\n 'class="w"></span>\n'\n '<span class="p">}</span><span class="w"></span>\n'\n '</pre>\n') == ('<p>This is normal text.</p>\n'\n '<pre><code>This is code text.\n'\n '</code></pre>\n'\n '<pre><span class="k">def</span> <span class="nf">this_is_python</span><span '\n 'class="p">():</span>\n'\n '    <span class="sd">&quot;&quot;&quot;This is a '\n 'docstring.&quot;&quot;&quot;</span>\n'\n '    <span class="k">pass</span>\n'\n '</pre>\n'\n '<pre><span class="kd">func</span> <span class="nx">ThisIsGo</span><span '\n 'class="p">(){</span>\n'\n '    <span class="k">return</span>\n'\n '<span class="p">}</span>\n'\n '</pre>\n')
E           <p>This is normal text.</p>
E           <pre><code>This is code text.
E           </code></pre>
E           <pre><span class="k">def</span> <span class="nf">this_is_python</span><span class="p">():</span>
E               <span class="sd">&quot;&quot;&quot;This is a docstring.&quot;&quot;&quot;</span>
E               <span class="k">pass</span>
E           </pre>
E         - <pre><span class="kd">func</span> <span class="nx">ThisIsGo</span><span class="p">(){</span>
E         ?                                  -
E         + <pre><span class="kd">func</span><span class="w"> </span><span class="nx">ThisIsGo</span><span class="p">(){</span><span class="w"></span>
E         ?                                       ++++++++++++++++++++++++                                                     +++++++++++++++++++++++
E         -     <span class="k">return</span>
E         - <span class="p">}</span>
E         + <span class="w">    </span><span class="k">return</span><span class="w"></span>
E         + <span class="p">}</span><span class="w"></span>
E           </pre>

tests/test_markdown.py:36: AssertionError
_ test_md_fixtures[/build/readme_renderer-32.0/tests/fixtures/test_GFM_highlight.md-/build/readme_renderer-32.0/tests/fixtures/test_GFM_highlight.html-GFM] _

md_filename = '/build/readme_renderer-32.0/tests/fixtures/test_GFM_highlight.md'
html_filename = '/build/readme_renderer-32.0/tests/fixtures/test_GFM_highlight.html'
variant = 'GFM'

    @pytest.mark.parametrize(
        ("md_filename", "html_filename", "variant"),
        MD_FIXTURES,
    )
    def test_md_fixtures(md_filename, html_filename, variant):
        # Get our Markup
        with io.open(md_filename, encoding='utf-8') as f:
            md_markup = f.read()

        # Get our expected
        with io.open(html_filename, encoding="utf-8") as f:
            expected = f.read()

>       assert render(md_markup, variant=variant) == expected
E       assert ('<p>This is normal text.</p>\n'\n '<pre><code>This is code text.\n'\n '</code></pre>\n'\n '<pre><span class="k">def</span> <span class="nf">this_is_python</span><span '\n 'class="p">():</span>\n'\n '    <span class="k">pass</span>\n'\n '</pre>\n'\n '<pre><span class="kd">func</span><span class="w"> </span><span '\n 'class="nx">ThisIsGo</span><span class="p">(){</span><span class="w"></span>\n'\n '<span class="w">    </span><span class="k">return</span><span '\n 'class="w"></span>\n'\n '<span class="p">}</span><span class="w"></span>\n'\n '</pre>\n') == ('<p>This is normal text.</p>\n'\n '<pre><code>This is code text.\n'\n '</code></pre>\n'\n '<pre><span class="k">def</span> <span class="nf">this_is_python</span><span '\n 'class="p">():</span>\n'\n '    <span class="k">pass</span>\n'\n '</pre>\n'\n '<pre><span class="kd">func</span> <span class="nx">ThisIsGo</span><span '\n 'class="p">(){</span>\n'\n '    <span class="k">return</span>\n'\n '<span class="p">}</span>\n'\n '</pre>\n')
E           <p>This is normal text.</p>
E           <pre><code>This is code text.
E           </code></pre>
E           <pre><span class="k">def</span> <span class="nf">this_is_python</span><span class="p">():</span>
E               <span class="k">pass</span>
E           </pre>
E         - <pre><span class="kd">func</span> <span class="nx">ThisIsGo</span><span class="p">(){</span>
E         ?                                  -
E         + <pre><span class="kd">func</span><span class="w"> </span><span class="nx">ThisIsGo</span><span class="p">(){</span><span class="w"></span>
E         ?                                       ++++++++++++++++++++++++                                                     +++++++++++++++++++++++
E         -     <span class="k">return</span>
E         - <span class="p">}</span>
E         + <span class="w">    </span><span class="k">return</span><span class="w"></span>
E         + <span class="p">}</span><span class="w"></span>
E           </pre>

tests/test_markdown.py:36: AssertionError
miketheman commented 2 years ago

Version 33.0 contains an upgrade to require cmarkgfm 0.8.0 or higher. 802c44b (#224)

mweinelt commented 2 years ago

Thanks!