Index: tools/telemetry/telemetry/core/backends/chrome/desktop_browser_finder.py |
diff --git a/tools/telemetry/telemetry/core/backends/chrome/desktop_browser_finder.py b/tools/telemetry/telemetry/core/backends/chrome/desktop_browser_finder.py |
index 8cd0ed8e8c031eb35d380700e2736ab4c376193f..e396081365e097ad12fb7c4daf955cd47aea0be5 100644 |
--- a/tools/telemetry/telemetry/core/backends/chrome/desktop_browser_finder.py |
+++ b/tools/telemetry/telemetry/core/backends/chrome/desktop_browser_finder.py |
@@ -10,6 +10,7 @@ import sys |
from telemetry.core import platform as platform_module |
from telemetry.core import browser |
+from telemetry.core import exceptions |
from telemetry.core import possible_browser |
from telemetry.core.backends.chrome import desktop_browser_backend |
from telemetry.util import path |
@@ -89,6 +90,14 @@ def SelectDefaultBrowser(possible_browsers): |
def CanFindAvailableBrowsers(): |
return not platform_module.GetHostPlatform().GetOSName() == 'chromeos' |
+def CanPossiblyHandlePath(target_path): |
+ _, extension = os.path.splitext(target_path.lower()) |
+ if sys.platform == 'darwin' or sys.platform.startswith('linux'): |
+ return not extension |
+ elif sys.platform.startswith('win'): |
+ return extension == '.exe' |
+ return False |
+ |
def FindAllBrowserTypes(_): |
return [ |
'exact', |
@@ -148,8 +157,9 @@ def FindAllAvailableBrowsers(finder_options): |
else: |
raise Exception('Platform not recognized') |
- # Add the explicit browser executable if given. |
- if finder_options.browser_executable: |
+ # Add the explicit browser executable if given and we can handle it. |
+ if (finder_options.browser_executable and |
+ CanPossiblyHandlePath(finder_options.browser_executable)): |
normalized_executable = os.path.expanduser( |
finder_options.browser_executable) |
if path.IsExecutable(normalized_executable): |
@@ -158,8 +168,9 @@ def FindAllAvailableBrowsers(finder_options): |
normalized_executable, flash_path, |
False, browser_directory)) |
else: |
- raise Exception('%s specified by --browser-executable does not exist', |
- normalized_executable) |
+ raise exceptions.PathMissingError( |
+ '%s specified by --browser-executable does not exist', |
+ normalized_executable) |
def AddIfFound(browser_type, build_dir, type_dir, app_name, content_shell): |
browser_directory = os.path.join(chrome_root, build_dir, type_dir) |