Skip to content

Instantly share code, notes, and snippets.

@alfredodeza
Last active December 11, 2015 23:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alfredodeza/4674495 to your computer and use it in GitHub Desktop.
Save alfredodeza/4674495 to your computer and use it in GitHub Desktop.
Trying to demonstrate a bug where the WSGI environ gets polluted with Routes + Cherrypy
import os
curdir = os.path.join(os.getcwd(), os.path.dirname(__file__))
import cherrypy
from cherrypy.test import helper
class RoutesDispatchTest(helper.CPWebCase):
def setup_server():
class Foo:
def index(self):
return "Hello from Foo"
class Bar:
def index(self):
return "Hello from Bar"
d = cherrypy.dispatch.RoutesDispatcher()
d.mapper.explicit = False
d.mapper.minimization = True
d.connect('foo', '/server/foo', Foo())
d.connect('bar', '/server/bar', Bar())
d.connect('root_bar', '/', Bar())
d.connect('root_meh', '/meh', Bar())
conf = {'/': {'request.dispatch': d},
'global': {'script_name': '/preview'}}
cherrypy.tree.mount(None, '/preview', conf)
setup_server = staticmethod(setup_server)
def test_Routes_Dispatch(self):
self.getPage("/preview/server/foo")
self.assertStatus("200 OK")
self.assertBody("Hello from Foo")
self.getPage("/preview/server/bar")
self.assertStatus("200 OK")
self.assertBody("Hello from Bar")
self.getPage("/preview/")
self.assertStatus("200 OK")
self.assertBody("Hello from Bar")
self.getPage("/preview/meh")
self.assertStatus("200 OK")
self.assertBody("Hello from Bar")
# uncomment below to get a 500
# because the lack of a trailing slash
# makes environ['PATH_INFO'] be ''
#self.getPage("/preview")
#self.assertStatus("200 OK")
#self.assertBody("Hello from Bar")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment