Skip to content

Commit f7269ce

Browse files
committed
gh-148427: Fix test to only raise on entity element
The side_effect must only raise for the external entity's element (<entity/>), not for the main document's element (<doc>), since startElement is called for both.
1 parent 26db8ed commit f7269ce

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

Lib/test/test_sax.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,8 +1057,11 @@ def test_expat_entityresolver_default(self):
10571057

10581058
def test_external_entity_ref_keyboard_interrupt(self):
10591059
# gh-148427: KeyboardInterrupt must propagate, not be swallowed
1060+
def raise_on_entity(name, attrs):
1061+
if name == 'entity':
1062+
raise KeyboardInterrupt('test')
10601063
eh = mock.Mock()
1061-
eh.startElement.side_effect = KeyboardInterrupt('test')
1064+
eh.startElement.side_effect = raise_on_entity
10621065

10631066
parser = create_parser()
10641067
parser.setFeature(feature_external_ges, True)
@@ -1073,8 +1076,11 @@ def test_external_entity_ref_keyboard_interrupt(self):
10731076

10741077
def test_external_entity_ref_system_exit(self):
10751078
# gh-148427: SystemExit must propagate, not be swallowed
1079+
def raise_on_entity(name, attrs):
1080+
if name == 'entity':
1081+
raise SystemExit(42)
10761082
eh = mock.Mock()
1077-
eh.startElement.side_effect = SystemExit(42)
1083+
eh.startElement.side_effect = raise_on_entity
10781084

10791085
parser = create_parser()
10801086
parser.setFeature(feature_external_ges, True)
@@ -1089,8 +1095,11 @@ def test_external_entity_ref_system_exit(self):
10891095

10901096
def test_external_entity_ref_stack_cleanup(self):
10911097
# gh-148427: _entity_stack must be cleaned up after errors
1098+
def raise_on_entity(name, attrs):
1099+
if name == 'entity':
1100+
raise ValueError('test error')
10921101
eh = mock.Mock()
1093-
eh.startElement.side_effect = ValueError('test error')
1102+
eh.startElement.side_effect = raise_on_entity
10941103

10951104
parser = create_parser()
10961105
parser.setFeature(feature_external_ges, True)

0 commit comments

Comments
 (0)