Bug 179520 - [webkitpy] Fix PlatformInfo._win_version since r224657
Summary: [webkitpy] Fix PlatformInfo._win_version since r224657
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Tools / Tests (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Fujii Hironori
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2017-11-09 20:19 PST by Fujii Hironori
Modified: 2017-11-15 09:39 PST (History)
6 users (show)

See Also:


Attachments
Patch (2.26 KB, patch)
2017-11-09 23:04 PST, Fujii Hironori
aakash_jain: review+
aakash_jain: commit-queue-
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Fujii Hironori 2017-11-09 20:19:11 PST
[Win] version.py: ValueError: Version expected to be string, integer, tuple or list of integers

Bug 179426 has added version.py.
It reports the following error by using ActivePython 2.7.

> C:\webkit\ga>python ./Tools/Scripts/webkit-patch apply-from-bug --port wincairo --no-update 123
> Traceback (most recent call last):
>   File "./Tools/Scripts/webkit-patch", line 84, in <module>
>     main()
>   File "./Tools/Scripts/webkit-patch", line 79, in main
>     WebKitPatch(os.path.abspath(__file__)).main()
>   File "C:\webkit\ga\Tools\Scripts\webkitpy\tool\main.py", line 57, in __init__
>     Host.__init__(self)
>   File "C:\webkit\ga\Tools\Scripts\webkitpy\common\host.py", line 48, in __init__
>     SystemHost.__init__(self)
>   File "C:\webkit\ga\Tools\Scripts\webkitpy\common\system\systemhost.py", line 40, in __init__
>     self.user = user.User()
>   File "C:\webkit\ga\Tools\Scripts\webkitpy\common\system\user.py", line 61, in __init__
>     self._platforminfo = platforminfo or PlatformInfo(sys, platform, Executive())
>   File "C:\webkit\ga\Tools\Scripts\webkitpy\common\system\platforminfo.py", line 61, in __init__
>     self.os_version = self._determine_win_version(self._win_version(sys_module))
>   File "C:\webkit\ga\Tools\Scripts\webkitpy\common\system\platforminfo.py", line 196, in _win_version
>     return Version(sys_module.getwindowsversion())
>   File "C:\webkit\ga\Tools\Scripts\webkitpy\common\version.py", line 46, in __init__
>     raise ValueError('Version expected to be string, integer, tuple or list of integers')
> ValueError: Version expected to be string, integer, tuple or list of integers

I tested with trunk@224660.
Comment 1 Fujii Hironori 2017-11-09 20:20:35 PST
5th element of getwindowsversion() is ''. This causes another error.
Should be truncated like sys.getwindowsversion()[0:3].

> ActivePython 2.7.10.12 (ActiveState Software Inc.) based on
> Python 2.7.10 (default, Aug 21 2015, 12:07:58) [MSC v.1500 64 bit (AMD64)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import sys
> >>> sys.getwindowsversion()
> sys.getwindowsversion(major=6, minor=2, build=9200, platform=2, service_pack='')
> >>> sys.getwindowsversion()[0:3]
> (6, 2, 9200)
> >>>
Comment 2 Fujii Hironori 2017-11-09 22:54:30 PST
r224657 breaks Cygwin Python, too.

> Traceback (most recent call last):
>   File "./Tools/Scripts/webkit-patch", line 84, in <module>
>     main()
>   File "./Tools/Scripts/webkit-patch", line 79, in main
>     WebKitPatch(os.path.abspath(__file__)).main()
>   File "/cygdrive/c/webkit/ga/Tools/Scripts/webkitpy/tool/main.py", line 57, in __init__
>     Host.__init__(self)
>   File "/cygdrive/c/webkit/ga/Tools/Scripts/webkitpy/common/host.py", line 48, in __init__
>     SystemHost.__init__(self)
>   File "/cygdrive/c/webkit/ga/Tools/Scripts/webkitpy/common/system/systemhost.py", line 40, in __init__
>     self.user = user.User()
>   File "/cygdrive/c/webkit/ga/Tools/Scripts/webkitpy/common/system/user.py", line 61, in __init__
>     self._platforminfo = platforminfo or PlatformInfo(sys, platform, Executive())
>   File "/cygdrive/c/webkit/ga/Tools/Scripts/webkitpy/common/system/platforminfo.py", line 61, in __init__
>     self.os_version = self._determine_win_version(self._win_version(sys_module))
>   File "/cygdrive/c/webkit/ga/Tools/Scripts/webkitpy/common/system/platforminfo.py", line 197, in _win_version
>     return Version(self._executive.run_command(['cmd', '/c', 'ver'], decode_output=False))
>   File "/cygdrive/c/webkit/ga/Tools/Scripts/webkitpy/common/version.py", line 38, in __init__
>     self[i] = ver.split('.')[i]
>   File "/cygdrive/c/webkit/ga/Tools/Scripts/webkitpy/common/version.py", line 73, in __setitem__
>     self.major = int(value)
> ValueError: invalid literal for int() with base 10: 'Microsoft Windows [Version 10'


This is the output of ver command.

> C:\>ver
> 
> Microsoft Windows [Version 10.0.14393]
Comment 3 Fujii Hironori 2017-11-09 23:04:36 PST
Created attachment 326560 [details]
Patch
Comment 4 Aakash Jain 2017-11-10 08:33:45 PST
Comment on attachment 326560 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=326560&action=review

> Tools/Scripts/webkitpy/common/system/platforminfo.py:199
> +    def _win_version_tuple_from_cmd(self):

This doesn't return tuple anymore, we should rename it to _win_version_from_cmd.
Comment 5 Jonathan Bedard 2017-11-10 09:03:59 PST
Committed the change (with Aakash's edits) in <https://trac.webkit.org/changeset/224685/webkit>.
Comment 6 Radar WebKit Bug Importer 2017-11-15 09:39:19 PST
<rdar://problem/35562165>