Changeset 692
- Timestamp:
- 09/28/05 19:07:23
- Files:
-
- trunk/cherrypy/_cputil.py (modified) (1 diff)
- trunk/cherrypy/config.py (modified) (1 diff)
- trunk/cherrypy/test/test_core.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/cherrypy/_cputil.py
r682 r692 189 189 190 190 code, reason, message = cptools.validStatus(status) 191 errorPageFile = cherrypy.config.get('errorPage.%s' % code, '') 192 if errorPageFile: 193 template = file(errorPageFile, 'rb') 194 else: 195 template = _HTTPErrorTemplate 196 197 kwargs.setdefault('status', "%s %s" % (code, reason)) 198 kwargs.setdefault('message', '') 199 kwargs.setdefault('traceback', '') 200 kwargs.setdefault('version', cherrypy.__version__) 191 192 # We can't use setdefault here, because some 193 # callers send None for kwarg values. 194 if kwargs.get('status') is None: 195 kwargs['status'] = "%s %s" % (code, reason) 196 if kwargs.get('message') is None: 197 kwargs['message'] = message 198 if kwargs.get('traceback') is None: 199 kwargs['traceback'] = '' 200 if kwargs.get('version') is None: 201 kwargs['version'] = cherrypy.__version__ 201 202 for k, v in kwargs.iteritems(): 202 203 if v is None: 203 204 kwargs[k] = "" 205 206 template = _HTTPErrorTemplate 207 errorPageFile = cherrypy.config.get('errorPage.%s' % code, '') 208 if errorPageFile: 209 try: 210 template = file(errorPageFile, 'rb') 211 except: 212 m = kwargs['message'] 213 if m: 214 m += "<br />" 215 m += ("In addition, the custom error page " 216 "failed:\n<br />%s" % (sys.exc_info()[1])) 217 kwargs['message'] = m 204 218 205 219 return template % kwargs trunk/cherrypy/config.py
r626 r692 49 49 50 50 'server.environment': 'development', 51 'server.httpErrors' : True,52 51 'server.protocolVersion': 'HTTP/1.0', 53 52 'server.logToScreen': True, trunk/cherrypy/test/test_core.py
r682 r692 162 162 class Error(Test): 163 163 164 def custom(self): 165 raise cherrypy.HTTPError(404) 166 164 167 def page_method(self): 165 168 raise ValueError() … … 265 268 cherrypy.config.update({ 266 269 'global': {'server.logToScreen': False, 267 'server.httpErrors' : False,268 270 'server.environment': 'production', 269 271 'server.showTracebacks': True, … … 298 300 '/error/cause_err_in_finalize': { 299 301 'server.showTracebacks': False, 302 }, 303 '/error/custom': { 304 'errorPage.404': "nonexistent.html", 300 305 }, 301 306 }) … … 534 539 finally: 535 540 ignore.pop() 541 542 # Test error in custom error page (ticket #305). 543 self.getPage("/error/custom") 544 self.assertStatus("404 Not Found") 545 msg = ("Nothing matches the given URI<br />" 546 "In addition, the custom error page failed:\n<br />" 547 "[Errno 2] No such file or directory: 'nonexistent.html'") 548 self.assertInBody(msg) 549 536 550 537 551 def test_Ranges(self):

