summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorFacundo Batista <facundobatista@gmail.com>2008-02-18 12:48:43 (GMT)
committerFacundo Batista <facundobatista@gmail.com>2008-02-18 12:48:43 (GMT)
commitd14600ec94abc39dfb83dfccae89d8e7043f3b8b (patch)
treeee92278c7d0bee4178238c54dac0483f173c9787 /Lib
parent759bfc6207e7979d4eaeed2a2ae611e1804aef55 (diff)
downloadcpython-d14600ec94abc39dfb83dfccae89d8e7043f3b8b.zip
cpython-d14600ec94abc39dfb83dfccae89d8e7043f3b8b.tar.gz
cpython-d14600ec94abc39dfb83dfccae89d8e7043f3b8b.tar.bz2
Issue 1224. Now we support again the double slash in the URL.
Thanks Anthony Lenton.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/SimpleHTTPServer.py3
-rw-r--r--Lib/test/test_SimpleHTTPServer.py41
2 files changed, 43 insertions, 1 deletions
diff --git a/Lib/SimpleHTTPServer.py b/Lib/SimpleHTTPServer.py
index 86c669e..249e237 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 0000000..9d3ad16
--- /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()