summaryrefslogtreecommitdiffstats
path: root/Tools/Scripts/webkitpy/layout_tests/port/chromium_win.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/Scripts/webkitpy/layout_tests/port/chromium_win.py')
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/port/chromium_win.py89
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