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

Unified Diff: tools/telemetry/telemetry/core/temporary_http_server.py

Issue 24451002: [telemetry] Support absolute paths by changing file:/// to file://. More robust file path handling. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unit test on mac, apparently /tmp is a symlink to /private/tmp Created 7 years, 2 months 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
Index: tools/telemetry/telemetry/core/temporary_http_server.py
diff --git a/tools/telemetry/telemetry/core/temporary_http_server.py b/tools/telemetry/telemetry/core/temporary_http_server.py
index e6dd42cf12574d3fba4f1808acfe7e7a23d7089b..c36ae8ca4246707efda3fa400f0adeace5ab419a 100644
--- a/tools/telemetry/telemetry/core/temporary_http_server.py
+++ b/tools/telemetry/telemetry/core/temporary_http_server.py
@@ -13,12 +13,18 @@ class TemporaryHTTPServer(object):
def __init__(self, browser_backend, paths):
self._server = None
self._devnull = None
- self._paths = paths
self._forwarder = None
self._host_port = util.GetAvailableLocalPort()
- for path in self._paths:
- assert os.path.exists(path), path
+ for path in paths:
+ assert os.path.exists(path), '%s does not exist.' % path
+ self._paths = set(map(os.path.realpath, paths))
+
+ common_prefix = os.path.commonprefix(self._paths)
+ if os.path.isdir(common_prefix):
+ self._base_dir = common_prefix
+ else:
+ self._base_dir = os.path.dirname(common_prefix)
self._devnull = open(os.devnull, 'w')
cmd = [sys.executable, '-m', 'memory_cache_http_server',
@@ -26,7 +32,7 @@ class TemporaryHTTPServer(object):
cmd.extend(self._paths)
env = os.environ.copy()
env['PYTHONPATH'] = os.path.abspath(os.path.dirname(__file__))
- self._server = subprocess.Popen(cmd, cwd=os.path.commonprefix(self._paths),
+ self._server = subprocess.Popen(cmd, cwd=self._base_dir,
env=env, stdout=self._devnull, stderr=self._devnull)
self._forwarder = browser_backend.CreateForwarder(
@@ -66,4 +72,5 @@ class TemporaryHTTPServer(object):
return self._forwarder.url
def UrlOf(self, path):
- return urlparse.urljoin(self.url, path)
+ relative_path = os.path.relpath(path, self._base_dir)
+ return urlparse.urljoin(self.url, relative_path.replace('\\', '/'))
« no previous file with comments | « tools/telemetry/telemetry/core/memory_cache_http_server.py ('k') | tools/telemetry/telemetry/page/actions/navigate.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698