mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +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 @@ def __str__(self):
 | 
				
			||||||
        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