mirror of
https://github.com/python/cpython.git
synced 2025-08-27 04:05:34 +00:00
commit the portion of PyXML patch #919008 that is relevant to the
standard library: str() of xml.sax.SAXParseException should not fail if the line and/or column number returned by the locator are None (tests added)
This commit is contained in:
parent
9de0a2ba9d
commit
6fd0b0d5ba
2 changed files with 42 additions and 2 deletions
|
@ -489,6 +489,41 @@ def test_expat_incomplete():
|
||||||
else:
|
else:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
def test_sax_parse_exception_str():
|
||||||
|
# pass various values from a locator to the SAXParseException to
|
||||||
|
# make sure that the __str__() doesn't fall apart when None is
|
||||||
|
# passed instead of an integer line and column number
|
||||||
|
#
|
||||||
|
# use "normal" values for the locator:
|
||||||
|
str(SAXParseException("message", None,
|
||||||
|
DummyLocator(1, 1)))
|
||||||
|
# use None for the line number:
|
||||||
|
str(SAXParseException("message", None,
|
||||||
|
DummyLocator(None, 1)))
|
||||||
|
# use None for the column number:
|
||||||
|
str(SAXParseException("message", None,
|
||||||
|
DummyLocator(1, None)))
|
||||||
|
# use None for both:
|
||||||
|
str(SAXParseException("message", None,
|
||||||
|
DummyLocator(None, None)))
|
||||||
|
return 1
|
||||||
|
|
||||||
|
class DummyLocator:
|
||||||
|
def __init__(self, lineno, colno):
|
||||||
|
self._lineno = lineno
|
||||||
|
self._colno = colno
|
||||||
|
|
||||||
|
def getPublicId(self):
|
||||||
|
return "pubid"
|
||||||
|
|
||||||
|
def getSystemId(self):
|
||||||
|
return "sysid"
|
||||||
|
|
||||||
|
def getLineNumber(self):
|
||||||
|
return self._lineno
|
||||||
|
|
||||||
|
def getColumnNumber(self):
|
||||||
|
return self._colno
|
||||||
|
|
||||||
# ===========================================================================
|
# ===========================================================================
|
||||||
#
|
#
|
||||||
|
|
|
@ -91,8 +91,13 @@ class SAXParseException(SAXException):
|
||||||
sysid = self.getSystemId()
|
sysid = self.getSystemId()
|
||||||
if sysid is None:
|
if sysid is None:
|
||||||
sysid = "<unknown>"
|
sysid = "<unknown>"
|
||||||
return "%s:%d:%d: %s" % (sysid, self.getLineNumber(),
|
linenum = self.getLineNumber()
|
||||||
self.getColumnNumber(), self._msg)
|
if linenum is None:
|
||||||
|
linenum = "?"
|
||||||
|
colnum = self.getColumnNumber()
|
||||||
|
if colnum is None:
|
||||||
|
colnum = "?"
|
||||||
|
return "%s:%s:%s: %s" % (sysid, linenum, colnum, self._msg)
|
||||||
|
|
||||||
|
|
||||||
# ===== SAXNOTRECOGNIZEDEXCEPTION =====
|
# ===== SAXNOTRECOGNIZEDEXCEPTION =====
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue