diff options
Diffstat (limited to 'Tools/Scripts/webkitpy/layout_tests/port/chromium_win.py')
-rw-r--r-- | Tools/Scripts/webkitpy/layout_tests/port/chromium_win.py | 89 |
1 files changed, 66 insertions, 23 deletions
diff --git a/Tools/Scripts/webkitpy/layout_tests/port/chromium_win.py b/Tools/Scripts/webkitpy/layout_tests/port/chromium_win.py index f4cbf80..e7c6e49 100644 --- a/Tools/Scripts/webkitpy/layout_tests/port/chromium_win.py +++ b/Tools/Scripts/webkitpy/layout_tests/port/chromium_win.py @@ -37,12 +37,60 @@ import chromium _log = logging.getLogger("webkitpy.layout_tests.port.chromium_win") +def os_version(windows_version=None): + if not windows_version: + if hasattr(sys, 'getwindowsversion'): + windows_version = tuple(sys.getwindowsversion()[:2]) + else: + # Make up something for testing. + windows_version = (5, 1) + + version_strings = { + (6, 1): 'win7', + (6, 0): 'vista', + (5, 1): 'xp', + } + return version_strings[windows_version] + + class ChromiumWinPort(chromium.ChromiumPort): """Chromium Win implementation of the Port class.""" - - def __init__(self, **kwargs): - kwargs.setdefault('port_name', 'chromium-win' + self.version()) - chromium.ChromiumPort.__init__(self, **kwargs) + # FIXME: Figure out how to unify this with base.TestConfiguration.all_systems()? + SUPPORTED_VERSIONS = ('xp', 'vista', 'win7') + + # FIXME: Do we need mac-snowleopard here, like the base win port? + FALLBACK_PATHS = { + 'xp': ['chromium-win-xp', 'chromium-win-vista', 'chromium-win', 'chromium', 'win', 'mac'], + 'vista': ['chromium-win-vista', 'chromium-win', 'chromium', 'win', 'mac'], + 'win7': ['chromium-win', 'chromium', 'win', 'mac'], + '': ['chromium-win', 'chromium', 'win', 'mac'], + } + + def __init__(self, port_name=None, windows_version=None, rebaselining=False, **kwargs): + # We're a little generic here because this code is reused by the + # 'google-chrome' port as well as the 'mock-' and 'dryrun-' ports. + port_name = port_name or 'chromium-win' + + if port_name.endswith('-win'): + # FIXME: The rebaselining flag is an ugly hack that lets us create an + # "chromium-win" port that is not version-specific. It should only be + # used by rebaseline-chromium-webkit-tests to explicitly put files into + # the generic directory. In theory we shouldn't need this, because + # the newest win port should be using 'chromium-win' as the baseline + # directory. However, we also don't have stable Win 7 bots :( + # + # When we remove this FIXME, we also need to remove '' as a valid + # fallback key in self.FALLBACK_PATHS. + if rebaselining: + self._version = '' + else: + self._version = os_version(windows_version) + port_name = port_name + '-' + self._version + else: + self._version = port_name[port_name.index('-win-') + 5:] + assert self._version in self.SUPPORTED_VERSIONS + + chromium.ChromiumPort.__init__(self, port_name=port_name, **kwargs) def setup_environ_for_server(self): env = chromium.ChromiumPort.setup_environ_for_server(self) @@ -54,21 +102,21 @@ class ChromiumWinPort(chromium.ChromiumPort): # python executable to run cgi program. env["CYGWIN_PATH"] = self.path_from_chromium_base( "third_party", "cygwin", "bin") - if (sys.platform == "win32" and self.get_option('register_cygwin')): + if (sys.platform in ("cygwin", "win32") and self.get_option('register_cygwin')): setup_mount = self.path_from_chromium_base("third_party", "cygwin", "setup_mount.bat") self._executive.run_command([setup_mount]) return env + def baseline_path(self): + if self.version() == 'win7': + # Win 7 is the newest version of windows, so it gets the base dir. + return self._webkit_baseline_path('chromium-win') + return self._webkit_baseline_path(self.name()) + def baseline_search_path(self): - port_names = [] - if self._name.endswith('-win-xp'): - port_names.append("chromium-win-xp") - if self._name.endswith('-win-xp') or self._name.endswith('-win-vista'): - port_names.append("chromium-win-vista") - # FIXME: This may need to include mac-snowleopard like win.py. - port_names.extend(["chromium-win", "chromium", "win", "mac"]) + port_names = self.FALLBACK_PATHS[self.version()] return map(self._webkit_baseline_path, port_names) def check_build(self, needs_http): @@ -87,19 +135,14 @@ class ChromiumWinPort(chromium.ChromiumPort): def test_platform_name(self): # We return 'win-xp', not 'chromium-win-xp' here, for convenience. - return 'win' + self.version() + + # FIXME: Get rid of this method after rebaseline_chromium_webkit_tests dies. + if self.version() == '': + return 'win' + return 'win-' + self.version() def version(self): - if not hasattr(sys, 'getwindowsversion'): - return '' - winver = sys.getwindowsversion() - if winver[0] == 6 and (winver[1] == 1): - return '-7' - if winver[0] == 6 and (winver[1] == 0): - return '-vista' - if winver[0] == 5 and (winver[1] == 1 or winver[1] == 2): - return '-xp' - return '' + return self._version # # PROTECTED ROUTINES |