@@ -366,41 +366,44 @@ def tearDown(self):
366366 finally :
367367 BaseTestCase .tearDown (self )
368368
369- def test_url_collapse_path_split (self ):
369+ def test_url_collapse_path (self ):
370+ # verify tail is the last portion and head is the rest on proper urls
370371 test_vectors = {
371- '' : ( '/' , '' ) ,
372+ '' : '//' ,
372373 '..' : IndexError ,
373374 '/.//..' : IndexError ,
374- '/' : ('/' , '' ),
375- '//' : ('/' , '' ),
376- '/\\ ' : ('/' , '\\ ' ),
377- '/.//' : ('/' , '' ),
378- 'cgi-bin/file1.py' : ('/cgi-bin' , 'file1.py' ),
379- '/cgi-bin/file1.py' : ('/cgi-bin' , 'file1.py' ),
380- 'a' : ('/' , 'a' ),
381- '/a' : ('/' , 'a' ),
382- '//a' : ('/' , 'a' ),
383- './a' : ('/' , 'a' ),
384- './C:/' : ('/C:' , '' ),
385- '/a/b' : ('/a' , 'b' ),
386- '/a/b/' : ('/a/b' , '' ),
387- '/a/b/c/..' : ('/a/b' , '' ),
388- '/a/b/c/../d' : ('/a/b' , 'd' ),
389- '/a/b/c/../d/e/../f' : ('/a/b/d' , 'f' ),
390- '/a/b/c/../d/e/../../f' : ('/a/b' , 'f' ),
391- '/a/b/c/../d/e/.././././..//f' : ('/a/b' , 'f' ),
375+ '/' : '//' ,
376+ '//' : '//' ,
377+ '/\\ ' : '//\\ ' ,
378+ '/.//' : '//' ,
379+ 'cgi-bin/file1.py' : '/cgi-bin/file1.py' ,
380+ '/cgi-bin/file1.py' : '/cgi-bin/file1.py' ,
381+ 'a' : '//a' ,
382+ '/a' : '//a' ,
383+ '//a' : '//a' ,
384+ './a' : '//a' ,
385+ './C:/' : '/C:/' ,
386+ '/a/b' : '/a/b' ,
387+ '/a/b/' : '/a/b/' ,
388+ '/a/b/.' : '/a/b/' ,
389+ '/a/b/c/..' : '/a/b/' ,
390+ '/a/b/c/../d' : '/a/b/d' ,
391+ '/a/b/c/../d/e/../f' : '/a/b/d/f' ,
392+ '/a/b/c/../d/e/../../f' : '/a/b/f' ,
393+ '/a/b/c/../d/e/.././././..//f' : '/a/b/f' ,
392394 '../a/b/c/../d/e/.././././..//f' : IndexError ,
393- '/a/b/c/../d/e/../../../f' : ( '/a' , 'f' ) ,
394- '/a/b/c/../d/e/../../../../f' : ( '/' , 'f' ) ,
395+ '/a/b/c/../d/e/../../../f' : '/a/f' ,
396+ '/a/b/c/../d/e/../../../../f' : '//f' ,
395397 '/a/b/c/../d/e/../../../../../f' : IndexError ,
396- '/a/b/c/../d/e/../../../../f/..' : ('/' , '' ),
398+ '/a/b/c/../d/e/../../../../f/..' : '//' ,
399+ '/a/b/c/../d/e/../../../../f/../.' : '//' ,
397400 }
398401 for path , expected in test_vectors .items ():
399402 if isinstance (expected , type ) and issubclass (expected , Exception ):
400403 self .assertRaises (expected ,
401- server ._url_collapse_path_split , path )
404+ server ._url_collapse_path , path )
402405 else :
403- actual = server ._url_collapse_path_split (path )
406+ actual = server ._url_collapse_path (path )
404407 self .assertEqual (expected , actual ,
405408 msg = 'path = %r\n Got: %r\n Wanted: %r' %
406409 (path , actual , expected ))
0 commit comments