gh-145259: Fix xml.dom.pulldom dropping events produced by parser.close()#145262
Open
zetzschest wants to merge 3 commits intopython:mainfrom
Open
gh-145259: Fix xml.dom.pulldom dropping events produced by parser.close()#145262zetzschest wants to merge 3 commits intopython:mainfrom
zetzschest wants to merge 3 commits intopython:mainfrom
Conversation
|
Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool. If this change has little impact on Python users, wait for a maintainer to apply the |
getEvent() returned None immediately after parser.close() without checking if close() generated new SAX events, silently dropping trailing events like END_ELEMENT.
3b0cc16 to
b0cb14a
Compare
|
Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool. If this change has little impact on Python users, wait for a maintainer to apply the |
- Remove @expectedfailure from test_end_document since END_DOCUMENT events are now correctly delivered - Update test_expandItem to consume remaining events (END_ELEMENT, END_DOCUMENT) that are now properly emitted
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue
When the input stream is exhausted,
getEvent()callsself.parser.close()and immediately returnsNonewithout checking whetherclose()generated new events. SAX events emitted duringclose()(e.g.END_ELEMENTfor the final tag) are silently lost.Reproducer
Fix
In
Lib/xml/dom/pulldom.py, after callingself.parser.close(), check if new events were produced before returningNone:Test updates
Two existing tests in
test_pulldomneeded adjustments since they were based on the previous behavior:test_end_documentwas marked@expectedFailure— it now passes as theEND_DOCUMENTevent is correctly delivered.test_expandItemexpectedStopIterationimmediately after</html>— updated to account for the additional events (likeEND_DOCUMENT) that are now properly emitted.