Skip to content

test.test_xml_etree*.XMLPullParserTest.test_simple_xml fails with (system) expat 2.6.0 #115133

Description

@mgorny

Bug report

Bug description:

Expat 2.6.0 was released yesterday, with CVE fixes. After upgrading the system library and building CPython --with-system-expat, I'm getting the following test failures:

======================================================================
FAIL: test_simple_xml (test.test_xml_etree.XMLPullParserTest.test_simple_xml) (chunk_size=1)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/mgorny/git/cpython/Lib/test/test_xml_etree.py", line 1495, in test_simple_xmlself.assert_event_tags(parser, [('end', 'element')])
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/mgorny/git/cpython/Lib/test/test_xml_etree.py", line 1480, in assert_event_tagsself.assertEqual([(action, elem.tag) for action, elem in events],
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
expected)
^^^^^^^^^AssertionError: Lists differ: [] != [('end', 'element')]
Second list contains 1 additional elements.
First extra element 0:
('end', 'element')
- []
+ [('end', 'element')]
======================================================================
FAIL: test_simple_xml (test.test_xml_etree.XMLPullParserTest.test_simple_xml) (chunk_size=5)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/mgorny/git/cpython/Lib/test/test_xml_etree.py", line 1498, in test_simple_xmlself.assert_event_tags(parser, [
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
('end', 'element'),
^^^^^^^^^^^^^^^^^^^
('end', 'empty-element'),
^^^^^^^^^^^^^^^^^^^^^^^^^
])
^^
File "/home/mgorny/git/cpython/Lib/test/test_xml_etree.py", line 1480, in assert_event_tagsself.assertEqual([(action, elem.tag) for action, elem in events],
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
expected)
^^^^^^^^^AssertionError: Lists differ: [('end', 'element')] != [('end', 'element'), ('end', 'empty-element')]
Second list contains 1 additional elements.
First extra element 1:
('end', 'empty-element')
- [('end', 'element')]
+ [('end', 'element'), ('end', 'empty-element')]
----------------------------------------------------------------------
======================================================================
FAIL: test_simple_xml (test.test_xml_etree_c.XMLPullParserTest.test_simple_xml) (chunk_size=1)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/mgorny/git/cpython/Lib/test/test_xml_etree.py", line 1495, in test_simple_xmlself.assert_event_tags(parser, [('end', 'element')])
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/mgorny/git/cpython/Lib/test/test_xml_etree.py", line 1480, in assert_event_tagsself.assertEqual([(action, elem.tag) for action, elem in events],
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
expected)
^^^^^^^^^AssertionError: Lists differ: [] != [('end', 'element')]
Second list contains 1 additional elements.
First extra element 0:
('end', 'element')
- []
+ [('end', 'element')]
======================================================================
FAIL: test_simple_xml (test.test_xml_etree_c.XMLPullParserTest.test_simple_xml) (chunk_size=5)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/mgorny/git/cpython/Lib/test/test_xml_etree.py", line 1498, in test_simple_xmlself.assert_event_tags(parser, [
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
('end', 'element'),
^^^^^^^^^^^^^^^^^^^
('end', 'empty-element'),
^^^^^^^^^^^^^^^^^^^^^^^^^
])
^^
File "/home/mgorny/git/cpython/Lib/test/test_xml_etree.py", line 1480, in assert_event_tagsself.assertEqual([(action, elem.tag) for action, elem in events],
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
expected)
^^^^^^^^^AssertionError: Lists differ: [('end', 'element')] != [('end', 'element'), ('end', 'empty-element')]
Second list contains 1 additional elements.
First extra element 1:
('end', 'empty-element')
- [('end', 'element')]
+ [('end', 'element'), ('end', 'empty-element')]
----------------------------------------------------------------------

I have reproduced with 3.11.8, 3.12.8 and main as of 2afc718, both using Gentoo ebuild and raw git repository. I've tested the latter like this:

./configure -C --with-system-expat
make -j12
./python -u -W default -bb -E -m test -vv test_xml_etree{,_c}

CC @hartwork

CPython versions tested on:

3.11, 3.12, CPython main branch

Operating systems tested on:

Linux

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    topic-XMLtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions