Changeset 225199 in webkit
- Timestamp:
- Nov 27, 2017 3:21:28 PM (6 years ago)
- Location:
- trunk/Tools
- Files:
-
- 2 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r225191 r225199 1 2017-11-27 Jonathan Bedard <jbedard@apple.com> 2 3 webkitpy: Better name-version mapping (Part 1) 4 https://bugs.webkit.org/show_bug.cgi?id=179621 5 <rdar://problem/35589585> 6 7 Reviewed by David Kilzer. 8 9 Mapping version numbers to version names should occur in a central location. 10 This has a few advantages. First, it makes iterating through versions easier. 11 Second, it allows for apple_additions to define an additional set of name 12 mappings. Lastly, it will allow, in a future patch, for us to track version 13 instead of version name, only mapping version to version name when required. 14 15 * Scripts/webkitpy/common/system/platforminfo.py: 16 (PlatformInfo.__init__): 17 (PlatformInfo._determine_os_name): Use VersionNameMap instead of custom functions 18 mapping version to name. 19 (PlatformInfo._determine_linux_version): Deleted. 20 (PlatformInfo._determine_mac_version): Deleted. 21 (PlatformInfo._determine_win_version): Deleted. 22 * Scripts/webkitpy/common/system/platforminfo_unittest.py: 23 (TestPlatformInfo.test_os_name_and_wrappers): 24 (TestPlatformInfo.test_os_version): 25 (TestPlatformInfo.test_display_name): 26 (TestPlatformInfo.test_total_bytes_memory): 27 * Scripts/webkitpy/common/version.py: 28 (Version.contained_in): Add partial version mapping. 29 * Scripts/webkitpy/common/version_name_map.py: Added. 30 (VersionNameMap): Holds a mapping of version name to version object. 31 (VersionNameMap.map): Don't re-create VersionNameMap every time. 32 (VersionNameMap.__init__): Initialize mapping, use platform to 33 define the default system platform. 34 (VersionNameMap._automap_to_major_version): Some operating systems, such 35 as iOS, have a naming scheme based on their major version and os name. 36 Automatically generate such mappings. 37 (VersionNameMap.to_name): Given a version object, platform name and 38 table, find the closest matching version name. 39 (VersionNameMap.strip_name_formatting): Remove spaces and extract the major version, 40 if a version string is included in the name. 41 (VersionNameMap.from_name): Return an os name and version given a version name. 42 * Scripts/webkitpy/common/version_name_map_unittest.py: Added. 43 (VersionMapTestCase): 44 (VersionMapTestCase.test_default_system_platform): 45 (VersionMapTestCase.test_mac_version_by_name): 46 (VersionMapTestCase.test_ios_version_by_name): 47 (VersionMapTestCase.test_mac_name_by_version): 48 (VersionMapTestCase.test_ios_name_by_version): 49 * Scripts/webkitpy/common/version_unittest.py: 50 (VersionTestCase.test_contained_in): 51 * Scripts/webkitpy/port/ios_device.py: 52 (IOSDevicePort.ios_version): Map os_version name to version number. 53 1 54 2017-11-27 Don Olmstead <don.olmstead@sony.com> 2 55 -
trunk/Tools/Scripts/webkitpy/common/system/platforminfo.py
r225033 r225199 32 32 33 33 from webkitpy.common.version import Version 34 from webkitpy.common.version_name_map import VersionNameMap 34 35 from webkitpy.common.system.executive import Executive 35 36 … … 52 53 self._platform_module = platform_module 53 54 self.os_name = self._determine_os_name(sys_module.platform) 54 if self.os_name == 'linux': 55 self.os_version = self._determine_linux_version() 56 if self.os_name == 'freebsd' or self.os_name == 'openbsd' or self.os_name == 'netbsd' or self.os_name == 'ios': 57 self.os_version = platform_module.release() 55 self.os_version = None 56 58 57 if self.os_name.startswith('mac'): 59 self.os_version = self._determine_mac_version(Version(platform_module.mac_ver()[0])) 60 if self.os_name.startswith('win'): 61 self.os_version = self._determine_win_version(self._win_version(sys_module)) 58 version = Version(platform_module.mac_ver()[0]) 59 elif self.os_name.startswith('win'): 60 version = self._win_version(sys_module) 61 elif self.os_name == 'linux' or self.os_name == 'freebsd' or self.os_name == 'openbsd' or self.os_name == 'netbsd': 62 version = None 63 else: 64 # Most other platforms (namely iOS) return conforming version strings. 65 version = Version(platform_module.release()) 66 62 67 self._is_cygwin = sys_module.platform == 'cygwin' 68 69 if version is None: 70 return 71 72 self.os_version = VersionNameMap.map(self).to_name(version, table='public') 73 assert self.os_version is not None 74 self.os_version = self.os_version.lower().replace(' ', '') 63 75 64 76 def is_mac(self): … … 165 177 raise AssertionError('unrecognized platform string "%s"' % sys_platform) 166 178 167 def _determine_mac_version(self, mac_version):168 version_strings = {169 5: 'leopard',170 6: 'snowleopard',171 7: 'lion',172 8: 'mountainlion',173 9: 'mavericks',174 10: 'yosemite',175 11: 'elcapitan',176 12: 'sierra',177 13: 'highsierra',178 }179 assert mac_version.minor >= min(version_strings.keys())180 return version_strings.get(mac_version.minor, 'future')181 182 def _determine_linux_version(self):183 # FIXME: we ignore whatever the real version is and pretend it's lucid for now.184 return 'lucid'185 186 def _determine_win_version(self, win_version):187 if self._platform_module.release() == '10':188 return 'win10'189 if win_version.major == 0 and win_version.minor == 0:190 if win_version[2] > 10000:191 return 'win10'192 if win_version == Version([6, 1, 7600]):193 return '7sp0'194 if win_version.major == 6 and win_version.minor == 0:195 return 'vista'196 if win_version.major == 5 and win_version.minor == 1:197 return 'xp'198 assert win_version[0] > 6 or win_version[1] >= 1, 'Unrecognized Windows version: "{}"'.format(win_version)199 return 'future'200 201 179 def _win_version(self, sys_module): 202 180 if hasattr(sys_module, 'getwindowsversion'): -
trunk/Tools/Scripts/webkitpy/common/system/platforminfo_unittest.py
r225033 r225199 88 88 89 89 def test_os_name_and_wrappers(self): 90 info = self.make_info(fake_sys('linux2') )90 info = self.make_info(fake_sys('linux2'), fake_platform('', '10.4')) 91 91 self.assertTrue(info.is_linux()) 92 92 self.assertFalse(info.is_mac()) … … 94 94 self.assertFalse(info.is_freebsd()) 95 95 96 info = self.make_info(fake_sys('linux3') )96 info = self.make_info(fake_sys('linux3'), fake_platform('', '10.4')) 97 97 self.assertTrue(info.is_linux()) 98 98 self.assertFalse(info.is_mac()) … … 123 123 self.assertFalse(info.is_freebsd()) 124 124 125 info = self.make_info(fake_sys('freebsd8') )125 info = self.make_info(fake_sys('freebsd8'), fake_platform('', '8.3-PRERELEASE')) 126 126 self.assertEqual(info.os_name, 'freebsd') 127 127 self.assertFalse(info.is_linux()) … … 145 145 self.assertEqual(self.make_info(fake_sys('darwin'), fake_platform('10.14.0')).os_version, 'future') 146 146 147 self.assertEqual(self.make_info(fake_sys('linux2') ).os_version, 'lucid')147 self.assertEqual(self.make_info(fake_sys('linux2'), fake_platform('', '10.4')).os_version, None) 148 148 149 self.assertEqual(self.make_info(fake_sys('freebsd8'), fake_platform('', '8.3-PRERELEASE')).os_version, '8.3-PRERELEASE')150 self.assertEqual(self.make_info(fake_sys('freebsd9'), fake_platform('', '9.0-RELEASE')).os_version, '9.0-RELEASE')149 self.assertEqual(self.make_info(fake_sys('freebsd8'), fake_platform('', '8.3-PRERELEASE')).os_version, None) 150 self.assertEqual(self.make_info(fake_sys('freebsd9'), fake_platform('', '9.0-RELEASE')).os_version, None) 151 151 152 152 self.assertRaises(AssertionError, self.make_info, fake_sys('win32', tuple([5, 0, 1234]))) 153 self.assertEqual(self.make_info(fake_sys('win32', tuple([6, 2, 1234]))).os_version, 'future') 153 self.assertEqual(self.make_info(fake_sys('win32', tuple([10, 0, 14393]))).os_version, 'win10') 154 self.assertEqual(self.make_info(fake_sys('win32', tuple([6, 2, 1234]))).os_version, '8') 154 155 self.assertEqual(self.make_info(fake_sys('win32', tuple([6, 1, 7600]))).os_version, '7sp0') 155 156 self.assertEqual(self.make_info(fake_sys('win32', tuple([6, 0, 1234]))).os_version, 'vista') … … 157 158 158 159 self.assertRaises(AssertionError, self.make_info, fake_sys('win32'), executive=fake_executive('5.0.1234')) 159 self.assertEqual(self.make_info(fake_sys('cygwin'), executive=fake_executive('6.2.1234')).os_version, ' future')160 self.assertEqual(self.make_info(fake_sys('cygwin'), executive=fake_executive('6.2.1234')).os_version, '8') 160 161 self.assertEqual(self.make_info(fake_sys('cygwin'), executive=fake_executive('6.1.7600')).os_version, '7sp0') 161 162 self.assertEqual(self.make_info(fake_sys('cygwin'), executive=fake_executive('6.0.1234')).os_version, 'vista') … … 169 170 self.assertNotEquals(info.display_name(), '') 170 171 171 info = self.make_info(fake_sys('linux2') )172 info = self.make_info(fake_sys('linux2'), fake_platform('', '10.4')) 172 173 self.assertNotEquals(info.display_name(), '') 173 174 174 info = self.make_info(fake_sys('freebsd9') )175 info = self.make_info(fake_sys('freebsd9'), fake_platform('', '9.0-RELEASE')) 175 176 self.assertNotEquals(info.display_name(), '') 176 177 … … 182 183 self.assertIsNone(info.total_bytes_memory()) 183 184 184 info = self.make_info(fake_sys('linux2') )185 info = self.make_info(fake_sys('linux2'), fake_platform('', '10.4')) 185 186 self.assertIsNone(info.total_bytes_memory()) 186 187 187 info = self.make_info(fake_sys('freebsd9') )188 info = self.make_info(fake_sys('freebsd9'), fake_platform('', '9.0-RELEASE')) 188 189 self.assertIsNone(info.total_bytes_memory()) -
trunk/Tools/Scripts/webkitpy/common/version.py
r225033 r225199 93 93 raise ValueError('Expected version key to be string or integer') 94 94 95 # 11.2 is contained in 11, but 11 is not contained in 11.2 96 def contained_in(self, version): 97 does_match = True 98 for i in xrange(len(self)): 99 if self[i] != version[i]: 100 does_match = False 101 if not does_match and version[i] != 0: 102 return False 103 return True 104 95 105 def __str__(self): 96 106 len_to_print = 1 -
trunk/Tools/Scripts/webkitpy/common/version_unittest.py
r225033 r225199 126 126 self.assertEqual(str(Version('0.0.3')), '0.0.3') 127 127 128 def test_contained_in(self): 129 self.assertTrue(Version('11.1').contained_in(Version('11'))) 130 self.assertTrue(Version('11.1.2').contained_in(Version('11.1'))) 131 self.assertFalse(Version('11').contained_in(Version('11.1'))) 132 self.assertFalse(Version('11').contained_in(Version('11.1.2'))) 133 self.assertFalse(Version('11.1').contained_in(Version('11.1.2'))) 134 self.assertTrue(Version('11').contained_in(Version('11'))) 135 self.assertTrue(Version('11.1').contained_in(Version('11.1'))) 136 self.assertTrue(Version('11.1.2').contained_in(Version('11.1.2'))) 137 self.assertTrue(Version('11').contained_in(Version('11.0'))) 138 self.assertTrue(Version('11.0').contained_in(Version('11'))) 139 self.assertTrue(Version('11').contained_in(Version('11.0.0'))) 140 self.assertTrue(Version('11.0.0').contained_in(Version('11'))) 141 self.assertTrue(Version('11.1').contained_in(Version('11.1.0'))) 142 self.assertTrue(Version('11.1.0').contained_in(Version('11.1'))) 143 128 144 def test_compare_versions(self): 129 145 self.assertEqual(Version('1.2.3'), Version('1.2.3')) -
trunk/Tools/Scripts/webkitpy/port/ios_device.py
r224657 r225199 26 26 from webkitpy.common.system.crashlogs import CrashLogs 27 27 from webkitpy.common.version import Version 28 from webkitpy.common.version_name_map import VersionNameMap 28 29 from webkitpy.port.config import apple_additions 29 30 from webkitpy.port.ios import IOSPort … … 109 110 if device.platform.os_version != version: 110 111 raise RuntimeError('Multiple connected devices have different iOS versions') 111 112 if version: 113 return VersionNameMap.map(self.host.platform).from_name(version)[1] 112 114 return Version(version) 113 115
Note: See TracChangeset
for help on using the changeset viewer.