Index: Misc/NEWS =================================================================== --- Misc/NEWS (revisión: 60873) +++ Misc/NEWS (copia de trabajo) @@ -414,6 +414,8 @@ Library ------- +- #1224: Fixed bad url parsing when path begins with double slash. + - ctypes instances that are not or do not contain pointers can now be pickled. Index: Lib/SimpleHTTPServer.py =================================================================== --- Lib/SimpleHTTPServer.py (revisión: 60873) +++ Lib/SimpleHTTPServer.py (copia de trabajo) @@ -146,7 +146,8 @@ """ # abandon query parameters - path = urlparse.urlparse(path)[2] + path = path.split('?',1)[0] + path = path.split('#',1)[0] path = posixpath.normpath(urllib.unquote(path)) words = path.split('/') words = filter(None, words) Index: Lib/test/test_SimpleHTTPRequestHandler.py =================================================================== --- Lib/test/test_SimpleHTTPRequestHandler.py (revisión: 0) +++ Lib/test/test_SimpleHTTPRequestHandler.py (revisión: 0) @@ -0,0 +1,43 @@ +#!/usr/bin/python + +""" +These tests only check url parsing for now. +We don't want to require the 'network' resource. +""" + +import os, unittest +from SimpleHTTPServer import SimpleHTTPRequestHandler +from test import test_support + + +class SocketlessRequestHandler (SimpleHTTPRequestHandler): + def __init__(self): + pass + +class SimpleHTTPRequestHandlerTestCase(unittest.TestCase): + """ Test url parsing """ + def setUp (self): + self.translated = os.getcwd() + self.translated = os.path.join(self.translated, 'filename') + self.handler = SocketlessRequestHandler () + + def test_queryArguments (self): + path = self.handler.translate_path ('/filename') + self.assertEquals (path, self.translated) + path = self.handler.translate_path ('/filename?foo=bar') + self.assertEquals (path, self.translated) + path = self.handler.translate_path ('/filename?a=b&spam=eggs#zot') + self.assertEquals (path, self.translated) + + def test_startWithDoubleSlash (self): + path = self.handler.translate_path ('//filename') + self.assertEquals (path, self.translated) + path = self.handler.translate_path ('//filename?foo=bar') + self.assertEquals (path, self.translated) + + +def test_main(): + test_support.run_unittest(SimpleHTTPRequestHandlerTestCase) + +if __name__ == "__main__": + test_main()