mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +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
	
	 Fred Drake
						Fred Drake