From d14600ec94abc39dfb83dfccae89d8e7043f3b8b Mon Sep 17 00:00:00 2001 From: Facundo Batista Date: Mon, 18 Feb 2008 12:48:43 +0000 Subject: [PATCH] Issue 1224. Now we support again the double slash in the URL. Thanks Anthony Lenton. --- Lib/SimpleHTTPServer.py | 3 ++- Lib/test/test_SimpleHTTPServer.py | 41 +++++++++++++++++++++++++++++++ Misc/NEWS | 2 ++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 Lib/test/test_SimpleHTTPServer.py diff --git a/Lib/SimpleHTTPServer.py b/Lib/SimpleHTTPServer.py index 86c669ea409..249e237fb7c 100644 --- a/Lib/SimpleHTTPServer.py +++ b/Lib/SimpleHTTPServer.py @@ -146,7 +146,8 @@ class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): """ # 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) diff --git a/Lib/test/test_SimpleHTTPServer.py b/Lib/test/test_SimpleHTTPServer.py new file mode 100644 index 00000000000..9d3ad16be62 --- /dev/null +++ b/Lib/test/test_SimpleHTTPServer.py @@ -0,0 +1,41 @@ +""" +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() diff --git a/Misc/NEWS b/Misc/NEWS index 1289844b955..c0b6431d83e 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -416,6 +416,8 @@ Library - Issue #1916. Added isgenerator() and isgeneratorfunction() to inspect.py. +- #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.