Message180526
The following compatibility unit test fails for me in lxml since Py3.3.
etree = xml.etree.ElementTree
def test_parser_target_error_in_start(self):
assertEqual = self.assertEqual
events = []
class Target(object):
def start(self, tag, attrib):
events.append("start")
assertEqual("TAG", tag)
raise ValueError("TEST")
def end(self, tag):
events.append("end")
assertEqual("TAG", tag)
def close(self):
return "DONE"
parser = self.etree.XMLParser(target=Target())
try:
parser.feed("<TAG/>")
except ValueError:
self.assertTrue('TEST' in str(sys.exc_info()[1]))
else:
self.assertTrue(False)
# ERROR HERE - gives ["start", "end"] in Py3.3
self.assertEqual(["start"], events)
It seems like cET doesn't handle exceptions early enough and still calls the end() method. Neither Python ElementTree nor lxml do this.
Some more tests are here:
https://github.com/lxml/lxml/blob/master/src/lxml/tests/test_elementtree.py#L3446
(all tests in that file are known to work with ET) |
|
Date |
User |
Action |
Args |
2013-01-24 15:10:08 | scoder | set | recipients:
+ scoder, eli.bendersky |
2013-01-24 15:10:08 | scoder | set | messageid: <1359040208.76.0.707549580683.issue17024@psf.upfronthosting.co.za> |
2013-01-24 15:10:08 | scoder | link | issue17024 messages |
2013-01-24 15:10:07 | scoder | create | |
|