change in way args are parsed and less test_routes.py

This commit is contained in:
mdipierro
2013-11-01 20:11:46 -05:00
parent b619bd3db7
commit fc72cdf3d0
3 changed files with 16 additions and 17 deletions

View File

@@ -1 +1 @@
Version 2.7.4-stable+timestamp.2013.11.01.18.48.46
Version 2.7.4-stable+timestamp.2013.11.01.20.10.58

View File

@@ -53,7 +53,7 @@ regex_version = re.compile(r'^(_[\d]+\.[\d]+\.[\d]+)$')
# apps in routes_apps_raw must parse raw_args into args
regex_url = re.compile('^/((?P<a>\w+)(/(?P<c>\w+)(/(?P<z>(?P<f>\w+)(\.(?P<e>[\w.]+))?(?P<s>.*)))?)?)?$')
regex_args = re.compile('^[/\w@=-]*(\.[/\w@=-]+)*$')
regex_args = re.compile('[^\w/.@=-]')
def _router_default():
@@ -623,7 +623,7 @@ def regex_url_in(request, environ):
# ##################################################
path = urllib.unquote(request.env.path_info) or '/'
path = path.replace('\\', '/').replace(' ','_')
path = path.replace('\\', '/')
if path.endswith('/') and len(path) > 1:
path = path[:-1]
match = regex_url.match(path)
@@ -634,7 +634,7 @@ def regex_url_in(request, environ):
request.raw_args = request.raw_args[1:]
if match.group('c') == 'static':
application = match.group('a')
version, filename = None, match.group('z')
version, filename = None, match.group('z').replace(' ','_')
if not filename:
raise HTTP(404)
items = filename.split('/', 1)
@@ -658,10 +658,9 @@ def regex_url_in(request, environ):
if request.application in routes.routes_apps_raw:
# application is responsible for parsing args
request.args = None
elif not regex_args.match(request.raw_args):
invalid_url(routes)
elif request.raw_args:
request.args = List(request.raw_args.split('/'))
args = regex_args.sub('_',request.raw_args)
request.args = List(args.split('/'))
else:
request.args = List([])
return (None, None, environ)

View File

@@ -190,16 +190,16 @@ default_application = 'defapp'
self.assertRaises(HTTP, filter_url, 'http://domain.com/ctl/bad!fcn')
self.assertRaises(
HTTP, filter_url, 'http://domain.com/ctl/fcn.bad!ext')
self.assertRaises(
HTTP, filter_url, 'http://domain.com/ctl/fcn/bad!arg')
try:
# 2.7+ only
self.assertRaisesRegexp(HTTP, '400 BAD REQUEST \[invalid path\]', filter_url, 'http://domain.com/init/bad!ctl')
self.assertRaisesRegexp(HTTP, '400 BAD REQUEST \[invalid path\]', filter_url, 'http://domain.com/init/ctlr/bad!fcn')
self.assertRaisesRegexp(HTTP, '400 BAD REQUEST \[invalid path\]', filter_url, 'http://domain.com/init/ctlr/fcn.bad!ext')
self.assertRaisesRegexp(HTTP, '400 BAD REQUEST \[invalid path\]', filter_url, 'http://domain.com/appc/init/fcn/bad!arg')
except AttributeError:
pass
#self.assertRaises(
# HTTP, filter_url, 'http://domain.com/ctl/fcn/bad!arg')
#try:
# # 2.7+ only
# self.assertRaisesRegexp(HTTP, '400 BAD REQUEST \[invalid path\]', filter_url, 'http://domain.com/init/bad!ctl')
# self.assertRaisesRegexp(HTTP, '400 BAD REQUEST \[invalid path\]', filter_url, 'http://domain.com/init/ctlr/bad!fcn')
# self.assertRaisesRegexp(HTTP, '400 BAD REQUEST \[invalid path\]', filter_url, 'http://domain.com/init/ctlr/fcn.bad!ext')
# self.assertRaisesRegexp(HTTP, '400 BAD REQUEST \[invalid path\]', filter_url, 'http://domain.com/appc/init/fcn/bad!arg')
#except AttributeError:
# pass
self.assertEqual(filter_url('http://domain.com/welcome/default/fcn_1'),
"/welcome/default/fcn_1")