Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Unified Diff: net/tools/testserver/testserver.py

Issue 4429001: SSLUITest's work with ephemeral port testserver. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nit-fixing. Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/data/ssl/page_with_unsafe_popup.html ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/tools/testserver/testserver.py
diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py
old mode 100644
new mode 100755
index c54d42504347638f2bbab7d717573502c54d760c..55aa6a9a1e1a297f51108079e00af6c22ccac62c
--- a/net/tools/testserver/testserver.py
+++ b/net/tools/testserver/testserver.py
@@ -21,7 +21,7 @@ import shutil
import SocketServer
import sys
import time
-import urllib2
+import urlparse
import warnings
# Ignore deprecation warnings, they make our output more cluttered.
@@ -573,6 +573,24 @@ class TestPageHandler(BaseHTTPServer.BaseHTTPRequestHandler):
self.end_headers()
return True
+ def _ReplaceFileData(self, data, query_parameters):
+ """Replaces matching substrings in a file.
+
+ If the 'replace_orig' and 'replace_new' URL query parameters are present,
+ a new string is returned with all occasions of the 'replace_orig' value
+ replaced by the 'replace_new' value.
+
+ If the parameters are not present, |data| is returned.
+ """
+ query_dict = cgi.parse_qs(query_parameters)
+ orig_values = query_dict.get('replace_orig', [])
+ new_values = query_dict.get('replace_new', [])
+ if not orig_values or not new_values:
+ return data
+ orig_value = orig_values[0]
+ new_value = new_values[0]
+ return data.replace(orig_value, new_value)
+
def FileHandler(self):
"""This handler sends the contents of the requested file. Wow, it's like
a real webserver!"""
@@ -585,29 +603,27 @@ class TestPageHandler(BaseHTTPServer.BaseHTTPRequestHandler):
if self.command == 'POST' or self.command == 'PUT' :
self.rfile.read(int(self.headers.getheader('content-length')))
- file = self.path[len(prefix):]
- if file.find('?') > -1:
- # Ignore the query parameters entirely.
- url, querystring = file.split('?')
- else:
- url = file
- entries = url.split('/')
- path = os.path.join(self.server.data_dir, *entries)
- if os.path.isdir(path):
- path = os.path.join(path, 'index.html')
-
- if not os.path.isfile(path):
- print "File not found " + file + " full path:" + path
+ _, _, url_path, _, query, _ = urlparse.urlparse(self.path)
+ sub_path = url_path[len(prefix):]
+ entries = sub_path.split('/')
+ file_path = os.path.join(self.server.data_dir, *entries)
+ if os.path.isdir(file_path):
+ file_path = os.path.join(file_path, 'index.html')
+
+ if not os.path.isfile(file_path):
+ print "File not found " + sub_path + " full path:" + file_path
self.send_error(404)
return True
- f = open(path, "rb")
+ f = open(file_path, "rb")
data = f.read()
f.close()
+ data = self._ReplaceFileData(data, query)
+
# If file.mock-http-headers exists, it contains the headers we
# should send. Read them in and parse them.
- headers_path = path + '.mock-http-headers'
+ headers_path = file_path + '.mock-http-headers'
if os.path.isfile(headers_path):
f = open(headers_path, "r")
@@ -627,7 +643,7 @@ class TestPageHandler(BaseHTTPServer.BaseHTTPRequestHandler):
# Could be more generic once we support mime-type sniffing, but for
# now we need to set it explicitly.
self.send_response(200)
- self.send_header('Content-type', self.GetMIMETypeFromName(file))
+ self.send_header('Content-type', self.GetMIMETypeFromName(file_path))
self.send_header('Content-Length', len(data))
self.end_headers()
« no previous file with comments | « chrome/test/data/ssl/page_with_unsafe_popup.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698