Skip to content

heads up: test_link_resolution failure with docutils 0.23 #1152

Description

@befeleme

What version of myst-parser are you using?

5.1.0

What version dependencies are you using?

sphinx 9.1.0, docutils 0.23 (unpinned dependencies)

What operating system are you using?

Linux

Describe the Bug

With docutils 0.23 which I'm integrating into Fedora now, there's one test failure coming form the fact that system_message level 1 is now also included in the xml tree, not only emitted as a report stream.
Updating the source md file isn't backwards compatible, and removing the system_message node from the test would also remove other four system_message that the tests already account with. So I don't know which way is the best to tackle it.

Please note: upstream's Sphinx doesn't yet support docutils 0.23, so it's not reproducible easily with tox.
I'm happy to test any solution using the Fedora build system.

_________________ test_link_resolution[121-explicit>implicit] __________________

file_params = ParamTestData(line=121, title='explicit>implicit', description='--myst-heading-anchors=1', content='# Test\n\n(test)=\...et "test-1" is not referenced.\n', index=4, fmt=<pytest_param_files.main.DotFormat object at 0x7fcfee73f530>, extra={})
normalize_doctree_xml = <function normalize_doctree_xml.<locals>._normalize at 0x7fcfed22d640>

    @pytest.mark.param_file(FIXTURE_PATH / "docutil_link_resolution.md")
    def test_link_resolution(file_params: ParamTestData, normalize_doctree_xml):
        """Test that Markdown links resolve to the correct target, or give the correct warning."""
        settings = settings_from_cmdline(file_params.description)
        report_stream = StringIO()
        settings["warning_stream"] = report_stream
        if file_params.title == "explicit>implicit":
            if docutils_version < (0, 22):
                # reporting changed in docutils 0.22
                pytest.skip("different in docutils>=0.22")
            settings["report_level"] = 0
        doctree = publish_doctree(
            file_params.content,
            source_path="<src>/index.md",
            parser=Parser(),
            settings_overrides=settings,
        )
        outcome = normalize_doctree_xml(doctree.pformat())
        if report_stream.getvalue().strip():
            outcome += "\n\n" + report_stream.getvalue().strip()
>       file_params.assert_expected(outcome, rstrip_lines=True)
E       AssertionError: actual != expected (use --regen-file-failure)
E       --- /builddir/build/BUILD/python-myst-parser-5.1.0-build/MyST-Parser-5.1.0/tests/test_renderers/fixtures/docutil_link_resolution.md:121
E       +++ (actual)
E       @@ -3,6 +3,9 @@
E                Test
E            <subtitle ids="other test-1" names="other test">
E                Other
E       +    <system_message level="1" line="3" source="<src>/index.md" type="INFO">
E       +        <paragraph>
E       +            Target name overrides implicit target name "test".
E            <target refid="test-1">
E            <paragraph>
E                <reference id_link="True" refid="test-1">

Expected Behavior

No response

To Reproduce

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions