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:
|
||||
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()
|
||||
if sysid is None:
|
||||
sysid = "<unknown>"
|
||||
return "%s:%d:%d: %s" % (sysid, self.getLineNumber(),
|
||||
self.getColumnNumber(), self._msg)
|
||||
linenum = self.getLineNumber()
|
||||
if linenum is None:
|
||||
linenum = "?"
|
||||
colnum = self.getColumnNumber()
|
||||
if colnum is None:
|
||||
colnum = "?"
|
||||
return "%s:%s:%s: %s" % (sysid, linenum, colnum, self._msg)
|
||||
|
||||
|
||||
# ===== SAXNOTRECOGNIZEDEXCEPTION =====
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue