Title: [225722] trunk/Tools
Revision
225722
Author
commit-qu...@webkit.org
Date
2017-12-08 23:39:47 -0800 (Fri, 08 Dec 2017)

Log Message

[Win] The way to detect Windows 10 is wrong
https://bugs.webkit.org/show_bug.cgi?id=179344
<rdar://problem/35562264>

Patch by Basuke Suzuki <basuke.suz...@sony.com> on 2017-12-08
Reviewed by Alex Christensen.

Python2.7 doesn't return correct information on Windows 10.
Use platform.win32_ver() instead of sys.getwindowsversion().

* Scripts/webkitpy/common/system/platforminfo.py:
(PlatformInfo._win_version):
(PlatformInfo._win_version_str):
* Scripts/webkitpy/common/system/platforminfo_unittest.py:
(fake_sys):
(fake_sys.FakeSysModule):
(fake_platform):
(fake_platform.FakePlatformModule.win32_ver):
(TestPlatformInfo.test_os_name_and_wrappers):
(TestPlatformInfo.test_os_version):
(TestPlatformInfo.test_display_name):
(TestPlatformInfo.test_total_bytes_memory):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (225721 => 225722)


--- trunk/Tools/ChangeLog	2017-12-09 05:40:02 UTC (rev 225721)
+++ trunk/Tools/ChangeLog	2017-12-09 07:39:47 UTC (rev 225722)
@@ -1,5 +1,29 @@
 2017-12-08  Basuke Suzuki  <basuke.suz...@sony.com>
 
+        [Win] The way to detect Windows 10 is wrong
+        https://bugs.webkit.org/show_bug.cgi?id=179344
+        <rdar://problem/35562264>
+
+        Reviewed by Alex Christensen.
+
+        Python2.7 doesn't return correct information on Windows 10.
+        Use platform.win32_ver() instead of sys.getwindowsversion().
+
+        * Scripts/webkitpy/common/system/platforminfo.py:
+        (PlatformInfo._win_version):
+        (PlatformInfo._win_version_str):
+        * Scripts/webkitpy/common/system/platforminfo_unittest.py:
+        (fake_sys):
+        (fake_sys.FakeSysModule):
+        (fake_platform):
+        (fake_platform.FakePlatformModule.win32_ver):
+        (TestPlatformInfo.test_os_name_and_wrappers):
+        (TestPlatformInfo.test_os_version):
+        (TestPlatformInfo.test_display_name):
+        (TestPlatformInfo.test_total_bytes_memory):
+
+2017-12-08  Basuke Suzuki  <basuke.suz...@sony.com>
+
         [WinCairo] Fix runtime error after r225229
         https://bugs.webkit.org/show_bug.cgi?id=180614
 

Modified: trunk/Tools/Scripts/webkitpy/common/system/platforminfo.py (225721 => 225722)


--- trunk/Tools/Scripts/webkitpy/common/system/platforminfo.py	2017-12-09 05:40:02 UTC (rev 225721)
+++ trunk/Tools/Scripts/webkitpy/common/system/platforminfo.py	2017-12-09 07:39:47 UTC (rev 225722)
@@ -57,7 +57,7 @@
         if self.os_name.startswith('mac'):
             version = Version.from_string(platform_module.mac_ver()[0])
         elif self.os_name.startswith('win'):
-            version = self._win_version(sys_module)
+            version = self._win_version()
         elif self.os_name == 'linux' or self.os_name == 'freebsd' or self.os_name == 'openbsd' or self.os_name == 'netbsd':
             version = None
         else:
@@ -176,14 +176,15 @@
             return 'haiku'
         raise AssertionError('unrecognized platform string "%s"' % sys_platform)
 
-    def _win_version(self, sys_module):
-        if hasattr(sys_module, 'getwindowsversion'):
-            return Version.from_iterable(sys_module.getwindowsversion()[0:3])
-        return Version.from_iterable(self._win_version_from_cmd())
+    def _win_version(self):
+        version = self._win_version_str()
+        match_object = re.search(r'(?P<major>\d+)\.(?P<minor>\d+)\.(?P<build>\d+)', version)
+        assert match_object, 'cmd returned an unexpected version string: ' + version
+        return Version.from_iterable(match_object.groups())
 
-    def _win_version_from_cmd(self):
+    def _win_version_str(self):
+        version = self._platform_module.win32_ver()[1]
+        if version:
+            return version
         # Note that this should only ever be called on windows, so this should always work.
-        ver_output = self._executive.run_command(['cmd', '/c', 'ver'], decode_output=False)
-        match_object = re.search(r'(?P<major>\d+)\.(?P<minor>\d+)\.(?P<build>\d+)', ver_output)
-        assert match_object, 'cmd returned an unexpected version string: ' + ver_output
-        return match_object.groups()
+        return self._executive.run_command(['cmd', '/c', 'ver'], decode_output=False)

Modified: trunk/Tools/Scripts/webkitpy/common/system/platforminfo_unittest.py (225721 => 225722)


--- trunk/Tools/Scripts/webkitpy/common/system/platforminfo_unittest.py	2017-12-09 05:40:02 UTC (rev 225721)
+++ trunk/Tools/Scripts/webkitpy/common/system/platforminfo_unittest.py	2017-12-09 07:39:47 UTC (rev 225722)
@@ -35,17 +35,15 @@
 from webkitpy.common.system.platforminfo import PlatformInfo
 
 
-def fake_sys(platform_str='darwin', windows_version_tuple=None):
+def fake_sys(platform_str='darwin'):
 
     class FakeSysModule(object):
         platform = platform_str
-        if windows_version_tuple:
-            getwindowsversion = lambda x: windows_version_tuple
 
     return FakeSysModule()
 
 
-def fake_platform(mac_version_string='10.6.3', release_string='bar'):
+def fake_platform(mac_version_string='10.6.3', release_string='bar', win_version_string=''):
 
     class FakePlatformModule(object):
         def mac_ver(self):
@@ -57,6 +55,9 @@
         def release(self):
             return release_string
 
+        def win32_ver(self):
+            return tuple(['', win_version_string, ''])
+
     return FakePlatformModule()
 
 
@@ -106,7 +107,7 @@
         self.assertFalse(info.is_win())
         self.assertFalse(info.is_freebsd())
 
-        info = self.make_info(fake_sys('win32', tuple([6, 1, 7600])))
+        info = self.make_info(fake_sys('win32'), fake_platform(win_version_string='6.1.7600'))
         self.assertEqual(info.os_name, 'win')
         self.assertFalse(info.is_linux())
         self.assertFalse(info.is_mac())
@@ -149,12 +150,12 @@
         self.assertEqual(self.make_info(fake_sys('freebsd8'), fake_platform('', '8.3-PRERELEASE')).os_version, None)
         self.assertEqual(self.make_info(fake_sys('freebsd9'), fake_platform('', '9.0-RELEASE')).os_version, None)
 
-        self.assertRaises(AssertionError, self.make_info, fake_sys('win32', tuple([5, 0, 1234])))
-        self.assertEqual(self.make_info(fake_sys('win32', tuple([10, 0, 14393]))).os_version, 'win10')
-        self.assertEqual(self.make_info(fake_sys('win32', tuple([6, 2, 1234]))).os_version, '8')
-        self.assertEqual(self.make_info(fake_sys('win32', tuple([6, 1, 7600]))).os_version, '7sp0')
-        self.assertEqual(self.make_info(fake_sys('win32', tuple([6, 0, 1234]))).os_version, 'vista')
-        self.assertEqual(self.make_info(fake_sys('win32', tuple([5, 1, 1234]))).os_version, 'xp')
+        self.assertRaises(AssertionError, self.make_info, fake_sys('win32'), fake_platform(win_version_string='5.0.1234'))
+        self.assertEqual(self.make_info(fake_sys('win32'), fake_platform(win_version_string='10.0.14393')).os_version, 'win10')
+        self.assertEqual(self.make_info(fake_sys('win32'), fake_platform(win_version_string='6.2.1234')).os_version, '8')
+        self.assertEqual(self.make_info(fake_sys('win32'), fake_platform(win_version_string='6.1.7600')).os_version, '7sp0')
+        self.assertEqual(self.make_info(fake_sys('win32'), fake_platform(win_version_string='6.0.1234')).os_version, 'vista')
+        self.assertEqual(self.make_info(fake_sys('win32'), fake_platform(win_version_string='5.1.1234')).os_version, 'xp')
 
         self.assertRaises(AssertionError, self.make_info, fake_sys('win32'), executive=fake_executive('5.0.1234'))
         self.assertEqual(self.make_info(fake_sys('cygwin'), executive=fake_executive('6.2.1234')).os_version, '8')
@@ -166,7 +167,7 @@
         info = self.make_info(fake_sys('darwin'))
         self.assertNotEquals(info.display_name(), '')
 
-        info = self.make_info(fake_sys('win32', tuple([6, 1, 7600])))
+        info = self.make_info(fake_sys('win32'), fake_platform(win_version_string='6.1.7600'))
         self.assertNotEquals(info.display_name(), '')
 
         info = self.make_info(fake_sys('linux2'), fake_platform('', '10.4'))
@@ -179,7 +180,7 @@
         info = self.make_info(fake_sys('darwin'), fake_platform('10.6.3'), fake_executive('1234'))
         self.assertEqual(info.total_bytes_memory(), 1234)
 
-        info = self.make_info(fake_sys('win32', tuple([6, 1, 7600])))
+        info = self.make_info(fake_sys('win32'), fake_platform(win_version_string='6.1.7600'))
         self.assertIsNone(info.total_bytes_memory())
 
         info = self.make_info(fake_sys('linux2'), fake_platform('', '10.4'))
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to