1 from cherrypy.test import test
2 test.prefer_parent_path()
3
4
22
23 def test_empty_string_app(environ, start_response):
24 status = '200 OK'
25 response_headers = [('Content-type', 'text/plain')]
26 start_response(status, response_headers)
27 return ['Hello', '', ' ', '', 'world']
28
29
30 class WSGIResponse(object):
31
32 def __init__(self, appresults):
33 self.appresults = appresults
34 self.iter = iter(appresults)
35
36 def __iter__(self):
37 return self
38
39 def next(self):
40 return self.iter.next()
41
42 def close(self):
43 if hasattr(self.appresults, "close"):
44 self.appresults.close()
45
46
47 class ReversingMiddleware(object):
48
49 def __init__(self, app):
50 self.app = app
51
52 def __call__(self, environ, start_response):
53 results = app(environ, start_response)
54 class Reverser(WSGIResponse):
55 def next(this):
56 line = list(this.iter.next())
57 line.reverse()
58 return "".join(line)
59 return Reverser(results)
60
61 class Root:
62 def index(self):
63 return "I'm a regular CherryPy page handler!"
64 index.exposed = True
65
66
67 cherrypy.config.update({'environment': 'test_suite'})
68 cherrypy.tree.mount(Root())
69
70 cherrypy.tree.graft(test_app, '/hosted/app1')
71 cherrypy.tree.graft(test_empty_string_app, '/hosted/app3')
72
73
74
75 app = cherrypy.Application(Root(), script_name=None)
76 cherrypy.tree.graft(ReversingMiddleware(app), '/hosted/app2')
77
78 from cherrypy.test import helper
79
80
82
83 wsgi_output = '''Hello, world!
84 This is a wsgi app running within CherryPy!'''
85
89
98
109
118
119 if __name__ == '__main__':
120 setup_server()
121 helper.testmain()
122