Title: [225229] trunk/Tools
Revision
225229
Author
[email protected]
Date
2017-11-28 11:10:44 -0800 (Tue, 28 Nov 2017)

Log Message

webkitpy: Standardize Version representation
https://bugs.webkit.org/show_bug.cgi?id=179677
<rdar://problem/35711277>

Reviewed by Alex Christensen.

Standardize a single method of representing versions in the Version object
constructor. Provide static methods for converting string and lists/tuples
to Version objects.

* Scripts/webkitpy/common/system/platforminfo.py:
(PlatformInfo.__init__): Parse Version object from string instead of using
the constructor.
(PlatformInfo.xcode_sdk_version): Ditto.
(PlatformInfo.xcode_version): Ditto.
(PlatformInfo._win_version): Construct Version object from list.
* Scripts/webkitpy/common/system/platforminfo_mock.py:
(MockPlatformInfo.xcode_sdk_version):
(MockPlatformInfo.xcode_version):
* Scripts/webkitpy/common/version.py:
(Version):
(Version.from_string): Parse string of the form 'x.x.x'.
(Version.from_iterable): Construct a version object from a list, tuple or
other indexable object.
(Version.__init__): Construct a Version object from integers.
* Scripts/webkitpy/common/version_name_map.py:
(VersionNameMap.__init__): Use integer Version constructor.
(VersionNameMap._automap_to_major_version): Ditto.
(VersionNameMap.to_name):
(VersionNameMap.strip_name_formatting): Construct Version from string.
* Scripts/webkitpy/common/version_name_map_unittest.py:
(VersionMapTestCase.test_mac_version_by_name): Use integer Version constructor.
(VersionMapTestCase.test_mac_name_by_version): Ditto.
(VersionMapTestCase.test_ios_name_by_version): Ditto.
* Scripts/webkitpy/common/version_unittest.py:
(VersionTestCase.test_string_constructor):
(VersionTestCase.test_from_list):
(VersionTestCase.test_from_tuple):
(VersionTestCase.test_int_constructor):
(VersionTestCase.test_len):
(VersionTestCase.test_set_by_int):
(VersionTestCase.test_set_by_string):
(VersionTestCase.test_get_by_int):
(VersionTestCase.test_get_by_string):
(VersionTestCase.test_string):
(VersionTestCase.test_contained_in):
(VersionTestCase.test_compare_versions):
(VersionTestCase.test_list_constructor): Deleted.
(VersionTestCase.test_tuple_constructor): Deleted.
(VersionTestCase.test_copy_constructor): Deleted.
(VersionTestCase.test_none_constructor): Deleted.
* Scripts/webkitpy/port/ios.py:
(IOSPort.default_baseline_search_path): Handle case where ios_version is None.
* Scripts/webkitpy/port/ios_device.py:
(IOSDevicePort.ios_version): Return None rather than an empty version.
* Scripts/webkitpy/port/ios_simulator.py:
(IOSSimulatorPort.simulator_runtime): Parse Version object from string instead
of using the constructor.
(IOSSimulatorPort.ios_version): Return None rather than an empty version.
* Scripts/webkitpy/xcode/simulator.py:
(Simulator._parse_runtimes): Parse Version object from string instead of using
the constructor.
(Simulator._parse_devices): Ditto.
* Scripts/webkitpy/xcode/simulator_unittest.py:

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (225228 => 225229)


--- trunk/Tools/ChangeLog	2017-11-28 18:56:56 UTC (rev 225228)
+++ trunk/Tools/ChangeLog	2017-11-28 19:10:44 UTC (rev 225229)
@@ -1,3 +1,70 @@
+2017-11-28  Jonathan Bedard  <[email protected]>
+
+        webkitpy: Standardize Version representation
+        https://bugs.webkit.org/show_bug.cgi?id=179677
+        <rdar://problem/35711277>
+
+        Reviewed by Alex Christensen.
+
+        Standardize a single method of representing versions in the Version object
+        constructor. Provide static methods for converting string and lists/tuples
+        to Version objects.
+
+        * Scripts/webkitpy/common/system/platforminfo.py:
+        (PlatformInfo.__init__): Parse Version object from string instead of using
+        the constructor.
+        (PlatformInfo.xcode_sdk_version): Ditto.
+        (PlatformInfo.xcode_version): Ditto.
+        (PlatformInfo._win_version): Construct Version object from list.
+        * Scripts/webkitpy/common/system/platforminfo_mock.py:
+        (MockPlatformInfo.xcode_sdk_version):
+        (MockPlatformInfo.xcode_version):
+        * Scripts/webkitpy/common/version.py:
+        (Version):
+        (Version.from_string): Parse string of the form 'x.x.x'.
+        (Version.from_iterable): Construct a version object from a list, tuple or
+        other indexable object.
+        (Version.__init__): Construct a Version object from integers.
+        * Scripts/webkitpy/common/version_name_map.py:
+        (VersionNameMap.__init__): Use integer Version constructor.
+        (VersionNameMap._automap_to_major_version): Ditto.
+        (VersionNameMap.to_name):
+        (VersionNameMap.strip_name_formatting): Construct Version from string.
+        * Scripts/webkitpy/common/version_name_map_unittest.py:
+        (VersionMapTestCase.test_mac_version_by_name): Use integer Version constructor.
+        (VersionMapTestCase.test_mac_name_by_version): Ditto.
+        (VersionMapTestCase.test_ios_name_by_version): Ditto.
+        * Scripts/webkitpy/common/version_unittest.py:
+        (VersionTestCase.test_string_constructor):
+        (VersionTestCase.test_from_list):
+        (VersionTestCase.test_from_tuple):
+        (VersionTestCase.test_int_constructor):
+        (VersionTestCase.test_len):
+        (VersionTestCase.test_set_by_int):
+        (VersionTestCase.test_set_by_string):
+        (VersionTestCase.test_get_by_int):
+        (VersionTestCase.test_get_by_string):
+        (VersionTestCase.test_string):
+        (VersionTestCase.test_contained_in):
+        (VersionTestCase.test_compare_versions):
+        (VersionTestCase.test_list_constructor): Deleted.
+        (VersionTestCase.test_tuple_constructor): Deleted.
+        (VersionTestCase.test_copy_constructor): Deleted.
+        (VersionTestCase.test_none_constructor): Deleted.
+        * Scripts/webkitpy/port/ios.py:
+        (IOSPort.default_baseline_search_path): Handle case where ios_version is None.
+        * Scripts/webkitpy/port/ios_device.py:
+        (IOSDevicePort.ios_version): Return None rather than an empty version.
+        * Scripts/webkitpy/port/ios_simulator.py:
+        (IOSSimulatorPort.simulator_runtime): Parse Version object from string instead
+        of using the constructor.
+        (IOSSimulatorPort.ios_version): Return None rather than an empty version.
+        * Scripts/webkitpy/xcode/simulator.py:
+        (Simulator._parse_runtimes): Parse Version object from string instead of using
+        the constructor.
+        (Simulator._parse_devices): Ditto.
+        * Scripts/webkitpy/xcode/simulator_unittest.py:
+
 2017-11-28  Daniel Bates  <[email protected]>
 
         [Cocoa] First pass at implementing alternative presentation button element

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


--- trunk/Tools/Scripts/webkitpy/common/system/platforminfo.py	2017-11-28 18:56:56 UTC (rev 225228)
+++ trunk/Tools/Scripts/webkitpy/common/system/platforminfo.py	2017-11-28 19:10:44 UTC (rev 225229)
@@ -55,7 +55,7 @@
         self.os_version = None
 
         if self.os_name.startswith('mac'):
-            version = Version(platform_module.mac_ver()[0])
+            version = Version.from_string(platform_module.mac_ver()[0])
         elif self.os_name.startswith('win'):
             version = self._win_version(sys_module)
         elif self.os_name == 'linux' or self.os_name == 'freebsd' or self.os_name == 'openbsd' or self.os_name == 'netbsd':
@@ -62,7 +62,7 @@
             version = None
         else:
             # Most other platforms (namely iOS) return conforming version strings.
-            version = Version(platform_module.release())
+            version = Version.from_string(platform_module.release())
 
         self._is_cygwin = sys_module.platform == 'cygwin'
 
@@ -145,7 +145,7 @@
             # Assumes that xcrun does not write to standard output on failure (e.g. SDK does not exist).
             xcrun_output = self._executive.run_command(['xcrun', '--sdk', sdk_name, '--show-sdk-version'], return_stderr=False, error_handler=Executive.ignore_error).rstrip()
             if xcrun_output:
-                return Version(xcrun_output)
+                return Version.from_string(xcrun_output)
         return None
 
     def xcode_simctl_list(self):
@@ -157,7 +157,7 @@
     def xcode_version(self):
         if not self.is_mac():
             raise NotImplementedError
-        return Version(self._executive.run_command(['xcodebuild', '-version']).split()[1])
+        return Version.from_string(self._executive.run_command(['xcodebuild', '-version']).split()[1])
 
     def _determine_os_name(self, sys_platform):
         if sys_platform == 'darwin':
@@ -178,8 +178,8 @@
 
     def _win_version(self, sys_module):
         if hasattr(sys_module, 'getwindowsversion'):
-            return Version(sys_module.getwindowsversion()[0:3])
-        return Version(self._win_version_from_cmd())
+            return Version.from_iterable(sys_module.getwindowsversion()[0:3])
+        return Version.from_iterable(self._win_version_from_cmd())
 
     def _win_version_from_cmd(self):
         # Note that this should only ever be called on windows, so this should always work.

Modified: trunk/Tools/Scripts/webkitpy/common/system/platforminfo_mock.py (225228 => 225229)


--- trunk/Tools/Scripts/webkitpy/common/system/platforminfo_mock.py	2017-11-28 18:56:56 UTC (rev 225228)
+++ trunk/Tools/Scripts/webkitpy/common/system/platforminfo_mock.py	2017-11-28 19:10:44 UTC (rev 225229)
@@ -67,10 +67,10 @@
         return 80
 
     def xcode_sdk_version(self, sdk_name):
-        return Version('8.1')
+        return Version(8, 1)
 
     def xcode_version(self):
-        return Version('8.0')
+        return Version(8, 0)
 
     def xcode_simctl_list(self):
         return self.expected_xcode_simctl_list

Modified: trunk/Tools/Scripts/webkitpy/common/version.py (225228 => 225229)


--- trunk/Tools/Scripts/webkitpy/common/version.py	2017-11-28 18:56:56 UTC (rev 225228)
+++ trunk/Tools/Scripts/webkitpy/common/version.py	2017-11-28 19:10:44 UTC (rev 225229)
@@ -25,27 +25,25 @@
 
 class Version(object):
 
-    def __init__(self, ver='0'):
-        self.major = 0
-        self.minor = 0
-        self.tiny = 0
-        self.micro = 0
-        self.nano = 0
-        if isinstance(ver, int):
-            self.major = ver
-            return
-        elif isinstance(ver, str) or isinstance(ver, unicode):
-            for i in xrange(len(ver.split('.'))):
-                self[i] = ver.split('.')[i]
-            return
-        elif isinstance(ver, Version) or isinstance(ver, collections.Iterable):
-            for i in xrange(len(ver)):
-                self[i] = ver[i]
-            return
-        elif ver is None:
-            return  # Empty version is implicitly zero
-        raise ValueError('Version expected to be string, integer, tuple or list of integers')
+    @staticmethod
+    def from_string(string):
+        assert isinstance(string, str) or isinstance(string, unicode)
+        return Version.from_iterable(string.split('.'))
 
+    @staticmethod
+    def from_iterable(val):
+        result = Version()
+        for i in xrange(len(val)):
+            result[i] = int(val[i])
+        return result
+
+    def __init__(self, major=0, minor=0, tiny=0, micro=0, nano=0):
+        self.major = int(major)
+        self.minor = int(minor)
+        self.tiny = int(tiny)
+        self.micro = int(micro)
+        self.nano = int(nano)
+
     def __len__(self):
         return 5
 

Modified: trunk/Tools/Scripts/webkitpy/common/version_name_map.py (225228 => 225229)


--- trunk/Tools/Scripts/webkitpy/common/version_name_map.py	2017-11-28 18:56:56 UTC (rev 225228)
+++ trunk/Tools/Scripts/webkitpy/common/version_name_map.py	2017-11-28 19:10:44 UTC (rev 225229)
@@ -43,34 +43,34 @@
         self.default_system_platform = platform.os_name
         self.mapping['public'] = {
             'mac': {
-                'Leopard': Version('10.5'),
-                'Snow Leopard': Version('10.6'),
-                'Lion': Version('10.7'),
-                'Mountain Lion': Version('10.8'),
-                'Mavericks': Version('10.9'),
-                'Yosemite': Version('10.10'),
-                'El Capitan': Version('10.11'),
-                'Sierra': Version('10.12'),
-                'High Sierra': Version('10.13'),
-                'Future': Version('10.14'),
+                'Leopard': Version(10, 5),
+                'Snow Leopard': Version(10, 6),
+                'Lion': Version(10, 7),
+                'Mountain Lion': Version(10, 8),
+                'Mavericks': Version(10, 9),
+                'Yosemite': Version(10, 10),
+                'El Capitan': Version(10, 11),
+                'Sierra': Version(10, 12),
+                'High Sierra': Version(10, 13),
+                'Future': Version(10, 14),
             },
-            'ios': self._automap_to_major_version('iOS', minimum=Version('10'), maximum=Version('12')),
+            'ios': self._automap_to_major_version('iOS', minimum=Version(10), maximum=Version(12)),
             'win': {
-                'Win10': Version('10'),
-                '8.1': Version('6.3'),
-                '8': Version('6.2'),
-                '7sp0': Version('6.1.7600'),
-                'Vista': Version('6'),
-                'XP': Version('5.1'),
+                'Win10': Version(10),
+                '8.1': Version(6, 3),
+                '8': Version(6, 2),
+                '7sp0': Version(6, 1, 7600),
+                'Vista': Version(6),
+                'XP': Version(5, 1),
             },
         }
 
     @classmethod
-    def _automap_to_major_version(cls, prefix, minimum=Version('1'), maximum=Version('1')):
+    def _automap_to_major_version(cls, prefix, minimum=Version(1), maximum=Version(1)):
         result = {}
         assert minimum <= maximum
         for i in xrange((maximum.major + 1) - minimum.major):
-            result['{} {}'.format(prefix, str(Version(str(minimum.major + i))))] = Version(str(minimum.major + i))
+            result['{} {}'.format(prefix, str(Version(minimum.major + i)))] = Version(minimum.major + i)
         return result
 
     def to_name(self, version, platform=None, table='public'):
@@ -78,7 +78,6 @@
         assert table in self.mapping
         assert platform in self.mapping[table]
         closest_match = (None, None)
-        version = Version(version)
         for os_name, os_version in self.mapping[table][platform].iteritems():
             if version == os_version:
                 return os_name
@@ -93,13 +92,13 @@
         # <OS> major.minor.tiny should map to <OS> major
         if ' ' in name:
             try:
-                name = '{}{}'.format(''.join(name.split(' ')[:-1]), Version(name.split(' ')[-1]).major)
+                name = '{}{}'.format(''.join(name.split(' ')[:-1]), Version.from_string(name.split(' ')[-1]).major)
             except ValueError:
                 pass
         else:
             try:
                 split = re.split(r'\d', name)
-                name = '{}{}'.format(split[0], Version(name[(len(split) - 1):]).major)
+                name = '{}{}'.format(split[0], Version.from_string(name[(len(split) - 1):]).major)
             except ValueError:
                 pass
 

Modified: trunk/Tools/Scripts/webkitpy/common/version_name_map_unittest.py (225228 => 225229)


--- trunk/Tools/Scripts/webkitpy/common/version_name_map_unittest.py	2017-11-28 18:56:56 UTC (rev 225228)
+++ trunk/Tools/Scripts/webkitpy/common/version_name_map_unittest.py	2017-11-28 19:10:44 UTC (rev 225229)
@@ -36,11 +36,11 @@
 
     def test_mac_version_by_name(self):
         map = VersionNameMap()
-        self.assertEqual(('mac', Version('10.12')), map.from_name('Sierra'))
-        self.assertEqual(('mac', Version('10.12')), map.from_name('sierra'))
-        self.assertEqual(('mac', Version('10.11')), map.from_name('El Capitan'))
-        self.assertEqual(('mac', Version('10.11')), map.from_name('elcapitan'))
-        self.assertEqual(('mac', Version('10.11')), map.from_name('el Capitan'))
+        self.assertEqual(('mac', Version(10, 12)), map.from_name('Sierra'))
+        self.assertEqual(('mac', Version(10, 12)), map.from_name('sierra'))
+        self.assertEqual(('mac', Version(10, 11)), map.from_name('El Capitan'))
+        self.assertEqual(('mac', Version(10, 11)), map.from_name('elcapitan'))
+        self.assertEqual(('mac', Version(10, 11)), map.from_name('el Capitan'))
 
     def test_ios_version_by_name(self):
         map = VersionNameMap()
@@ -52,12 +52,12 @@
 
     def test_mac_name_by_version(self):
         map = VersionNameMap()
-        self.assertEqual('Sierra', map.to_name(version=Version('10.12'), platform='mac'))
-        self.assertEqual('El Capitan', map.to_name(version=Version('10.11'), platform='mac'))
-        self.assertEqual('El Capitan', map.to_name(version=Version('10.11.3'), platform='mac'))
+        self.assertEqual('Sierra', map.to_name(version=Version(10, 12), platform='mac'))
+        self.assertEqual('El Capitan', map.to_name(version=Version(10, 11), platform='mac'))
+        self.assertEqual('El Capitan', map.to_name(version=Version(10, 11, 3), platform='mac'))
 
     def test_ios_name_by_version(self):
         map = VersionNameMap()
-        self.assertEqual('iOS 11', map.to_name(version=Version('11'), platform='ios'))
-        self.assertEqual('iOS 10', map.to_name(version=Version('10'), platform='ios'))
-        self.assertEqual('iOS 10', map.to_name(version=Version('10.3'), platform='ios'))
+        self.assertEqual('iOS 11', map.to_name(version=Version(11), platform='ios'))
+        self.assertEqual('iOS 10', map.to_name(version=Version(10), platform='ios'))
+        self.assertEqual('iOS 10', map.to_name(version=Version(10, 3), platform='ios'))

Modified: trunk/Tools/Scripts/webkitpy/common/version_unittest.py (225228 => 225229)


--- trunk/Tools/Scripts/webkitpy/common/version_unittest.py	2017-11-28 18:56:56 UTC (rev 225228)
+++ trunk/Tools/Scripts/webkitpy/common/version_unittest.py	2017-11-28 19:10:44 UTC (rev 225229)
@@ -28,7 +28,7 @@
 class VersionTestCase(unittest.TestCase):
 
     def test_string_constructor(self):
-        v = Version('1.2.3.4.5')
+        v = Version.from_string('1.2.3.4.5')
         self.assertEqual(v.major, 1)
         self.assertEqual(v.minor, 2)
         self.assertEqual(v.tiny, 3)
@@ -35,8 +35,8 @@
         self.assertEqual(v.micro, 4)
         self.assertEqual(v.nano, 5)
 
-    def test_list_constructor(self):
-        v = Version([1, 2, 3, 4, 5])
+    def test_from_list(self):
+        v = Version.from_iterable([1, 2, 3, 4, 5])
         self.assertEqual(v.major, 1)
         self.assertEqual(v.minor, 2)
         self.assertEqual(v.tiny, 3)
@@ -43,8 +43,8 @@
         self.assertEqual(v.micro, 4)
         self.assertEqual(v.nano, 5)
 
-    def test_tuple_constructor(self):
-        v = Version((1, 2, 3))
+    def test_from_tuple(self):
+        v = v = Version.from_iterable((1, 2, 3))
         self.assertEqual(v.major, 1)
         self.assertEqual(v.minor, 2)
         self.assertEqual(v.tiny, 3)
@@ -57,28 +57,12 @@
         self.assertEqual(v.micro, 0)
         self.assertEqual(v.nano, 0)
 
-    def test_copy_constructor(self):
-        v = Version(Version([1, 2, 3, 4, 5]))
-        self.assertEqual(v.major, 1)
-        self.assertEqual(v.minor, 2)
-        self.assertEqual(v.tiny, 3)
-        self.assertEqual(v.micro, 4)
-        self.assertEqual(v.nano, 5)
-
-    def test_none_constructor(self):
-        v = Version(None)
-        self.assertEqual(v.major, 0)
-        self.assertEqual(v.minor, 0)
-        self.assertEqual(v.tiny, 0)
-        self.assertEqual(v.micro, 0)
-        self.assertEqual(v.nano, 0)
-
     def test_len(self):
-        self.assertEqual(len(Version('1.2.3.4.5')), 5)
+        self.assertEqual(len(Version(1, 2, 3, 4, 5)), 5)
         self.assertEqual(len(Version()), 5)
 
     def test_set_by_int(self):
-        v = Version(None)
+        v = Version()
         v[0] = 1
         self.assertEqual(v.major, 1)
         v[1] = 2
@@ -91,7 +75,7 @@
         self.assertEqual(v.nano, 5)
 
     def test_set_by_string(self):
-        v = Version(None)
+        v = Version()
         v['major'] = 1
         self.assertEqual(v.major, 1)
         v['minor'] = 2
@@ -104,7 +88,7 @@
         self.assertEqual(v.nano, 5)
 
     def test_get_by_int(self):
-        v = Version('1.2.3.4.5')
+        v = Version(1, 2, 3, 4, 5)
         self.assertEqual(v[0], v.major)
         self.assertEqual(v[1], v.minor)
         self.assertEqual(v[2], v.tiny)
@@ -112,7 +96,7 @@
         self.assertEqual(v[4], v.nano)
 
     def test_get_by_string(self):
-        v = Version('1.2.3.4.5')
+        v = Version(1, 2, 3, 4, 5)
         self.assertEqual(v['major'], v.major)
         self.assertEqual(v['minor'], v.minor)
         self.assertEqual(v['tiny'], v.tiny)
@@ -120,29 +104,29 @@
         self.assertEqual(v['nano'], v.nano)
 
     def test_string(self):
-        self.assertEqual(str(Version('1.2.3')), '1.2.3')
-        self.assertEqual(str(Version('1.2.0')), '1.2')
-        self.assertEqual(str(Version('1.2')), '1.2')
-        self.assertEqual(str(Version('0.0.3')), '0.0.3')
+        self.assertEqual(str(Version(1, 2, 3)), '1.2.3')
+        self.assertEqual(str(Version(1, 2, 0)), '1.2')
+        self.assertEqual(str(Version(1, 2)), '1.2')
+        self.assertEqual(str(Version(0, 0, 3)), '0.0.3')
 
     def test_contained_in(self):
-        self.assertTrue(Version('11.1').contained_in(Version('11')))
-        self.assertTrue(Version('11.1.2').contained_in(Version('11.1')))
-        self.assertFalse(Version('11').contained_in(Version('11.1')))
-        self.assertFalse(Version('11').contained_in(Version('11.1.2')))
-        self.assertFalse(Version('11.1').contained_in(Version('11.1.2')))
-        self.assertTrue(Version('11').contained_in(Version('11')))
-        self.assertTrue(Version('11.1').contained_in(Version('11.1')))
-        self.assertTrue(Version('11.1.2').contained_in(Version('11.1.2')))
-        self.assertTrue(Version('11').contained_in(Version('11.0')))
-        self.assertTrue(Version('11.0').contained_in(Version('11')))
-        self.assertTrue(Version('11').contained_in(Version('11.0.0')))
-        self.assertTrue(Version('11.0.0').contained_in(Version('11')))
-        self.assertTrue(Version('11.1').contained_in(Version('11.1.0')))
-        self.assertTrue(Version('11.1.0').contained_in(Version('11.1')))
+        self.assertTrue(Version(11, 1).contained_in(Version(11)))
+        self.assertTrue(Version(11, 1, 2).contained_in(Version(11, 1)))
+        self.assertFalse(Version(11).contained_in(Version(11, 1)))
+        self.assertFalse(Version(11).contained_in(Version(11, 1, 2)))
+        self.assertFalse(Version(11, 1).contained_in(Version(11, 1, 2)))
+        self.assertTrue(Version(11).contained_in(Version(11)))
+        self.assertTrue(Version(11, 1).contained_in(Version(11, 1)))
+        self.assertTrue(Version(11, 1, 2).contained_in(Version(11, 1, 2)))
+        self.assertTrue(Version(11).contained_in(Version(11, 0)))
+        self.assertTrue(Version(11, 0).contained_in(Version(11)))
+        self.assertTrue(Version(11).contained_in(Version(11, 0, 0)))
+        self.assertTrue(Version(11, 0, 0).contained_in(Version(11)))
+        self.assertTrue(Version(11, 1).contained_in(Version(11, 1, 0)))
+        self.assertTrue(Version(11, 1, 0).contained_in(Version(11, 1)))
 
     def test_compare_versions(self):
-        self.assertEqual(Version('1.2.3'), Version('1.2.3'))
-        self.assertGreater(Version('1.2.4'), Version('1.2.3'))
-        self.assertGreater(Version('1.3.2'), Version('1.2.3'))
-        self.assertGreater(Version('2.1.1'), Version('1.2.3'))
+        self.assertEqual(Version(1, 2, 3), Version(1, 2, 3))
+        self.assertGreater(Version(1, 2, 4), Version(1, 2, 3))
+        self.assertGreater(Version(1, 3, 2), Version(1, 2, 3))
+        self.assertGreater(Version(2, 1, 1), Version(1, 2, 3))

Modified: trunk/Tools/Scripts/webkitpy/port/ios.py (225228 => 225229)


--- trunk/Tools/Scripts/webkitpy/port/ios.py	2017-11-28 18:56:56 UTC (rev 225228)
+++ trunk/Tools/Scripts/webkitpy/port/ios.py	2017-11-28 19:10:44 UTC (rev 225229)
@@ -109,15 +109,19 @@
         wk_string = 'wk1'
         if self.get_option('webkit_test_runner'):
             wk_string = 'wk2'
-        fallback_names = [
-            '{}-{}-{}'.format(self.port_name, self.ios_version().major, wk_string),
-            '{}-{}'.format(self.port_name, self.ios_version().major),
-            '{}-{}'.format(self.port_name, wk_string),
-            self.port_name,
-            '{}-{}'.format(IOSPort.port_name, self.ios_version().major),
-            '{}-{}'.format(IOSPort.port_name, wk_string),
-            IOSPort.port_name,
-        ]
+        # If we don't have a specified version, that means we using the port without an SDK.
+        # This usually means we're doing some type of testing.In this case, don't add version fallbacks
+        fallback_names = []
+        if self.ios_version():
+            fallback_names.append('{}-{}-{}'.format(self.port_name, self.ios_version().major, wk_string))
+            fallback_names.append('{}-{}'.format(self.port_name, self.ios_version().major))
+        fallback_names.append('{}-{}'.format(self.port_name, wk_string))
+        fallback_names.append(self.port_name)
+        if self.ios_version():
+            fallback_names.append('{}-{}'.format(IOSPort.port_name, self.ios_version().major))
+        fallback_names.append('{}-{}'.format(IOSPort.port_name, wk_string))
+        fallback_names.append(IOSPort.port_name)
+
         if self.get_option('webkit_test_runner'):
             fallback_names.append('wk2')
 

Modified: trunk/Tools/Scripts/webkitpy/port/ios_device.py (225228 => 225229)


--- trunk/Tools/Scripts/webkitpy/port/ios_device.py	2017-11-28 18:56:56 UTC (rev 225228)
+++ trunk/Tools/Scripts/webkitpy/port/ios_device.py	2017-11-28 19:10:44 UTC (rev 225229)
@@ -95,7 +95,7 @@
     @memoized
     def ios_version(self):
         if self.get_option('version'):
-            return Version(self.get_option('version'))
+            return Version.from_string(self.get_option('version'))
 
         if not apple_additions():
             raise RuntimeError(self.NO_ON_DEVICE_TESTING)
@@ -111,7 +111,7 @@
                     raise RuntimeError('Multiple connected devices have different iOS versions')
         if version:
             return VersionNameMap.map(self.host.platform).from_name(version)[1]
-        return Version(version)
+        return None
 
     # FIXME: These need device implementations <rdar://problem/30497991>.
     def check_for_leaks(self, process_name, process_pid):

Modified: trunk/Tools/Scripts/webkitpy/port/ios_simulator.py (225228 => 225229)


--- trunk/Tools/Scripts/webkitpy/port/ios_simulator.py	2017-11-28 18:56:56 UTC (rev 225228)
+++ trunk/Tools/Scripts/webkitpy/port/ios_simulator.py	2017-11-28 19:10:44 UTC (rev 225229)
@@ -103,7 +103,7 @@
         if runtime_identifier:
             runtime = Runtime.from_identifier(runtime_identifier)
         elif self.get_option('version'):
-            runtime = Runtime.from_version(Version(self.get_option('version')))
+            runtime = Runtime.from_version(Version.from_string(self.get_option('version')))
         else:
             runtime = Runtime.from_version(self.host.platform.xcode_sdk_version('iphonesimulator'))
         return runtime
@@ -112,10 +112,10 @@
     def ios_version(self):
         runtime_identifier = self.get_option('runtime')
         if self.get_option('version'):
-            return Version(self.get_option('version'))
+            return Version.from_string(self.get_option('version'))
         if runtime_identifier:
-            return Version(Runtime.from_identifier(runtime_identifier).version)
-        return Version(self.host.platform.xcode_sdk_version('iphonesimulator'))
+            return Runtime.from_identifier(runtime_identifier).version
+        return self.host.platform.xcode_sdk_version('iphonesimulator')
 
     def simulator_device_type(self):
         device_type_identifier = self.get_option('device_type')

Modified: trunk/Tools/Scripts/webkitpy/xcode/simulator.py (225228 => 225229)


--- trunk/Tools/Scripts/webkitpy/xcode/simulator.py	2017-11-28 18:56:56 UTC (rev 225228)
+++ trunk/Tools/Scripts/webkitpy/xcode/simulator.py	2017-11-28 19:10:44 UTC (rev 225229)
@@ -333,7 +333,7 @@
                 if line != '== Devices ==':
                     raise RuntimeError('Expected == Devices == header but got: "{}"'.format(line))
                 break
-            runtime = Runtime(version=Version(runtime_match.group('version')),
+            runtime = Runtime(version=Version.from_string(runtime_match.group('version')),
                               identifier=runtime_match.group('identifier'),
                               available=runtime_match.group('availability') is None,
                               is_internal_runtime=('Internal' in runtime_match.group('os')))
@@ -351,7 +351,7 @@
         for line in lines:
             version_match = self.version_re.match(line)
             if version_match:
-                current_runtime = self.runtime(version=Version(version_match.group('version')), is_internal_runtime=bool(version_match.group('internal')))
+                current_runtime = self.runtime(version=Version.from_string(version_match.group('version')), is_internal_runtime=bool(version_match.group('internal')))
                 assert current_runtime
                 continue
 

Modified: trunk/Tools/Scripts/webkitpy/xcode/simulator_unittest.py (225228 => 225229)


--- trunk/Tools/Scripts/webkitpy/xcode/simulator_unittest.py	2017-11-28 18:56:56 UTC (rev 225228)
+++ trunk/Tools/Scripts/webkitpy/xcode/simulator_unittest.py	2017-11-28 19:10:44 UTC (rev 225229)
@@ -135,7 +135,7 @@
         self.assertEqual('com.apple.CoreSimulator.SimRuntime.iOS-8-0', runtime_ios_8.identifier)
         self.assertEqual(True, runtime_ios_8.available)
         self.assertEqual(False, runtime_ios_8.is_internal_runtime)
-        self.assertEqual(Version([8, 0]), runtime_ios_8.version)
+        self.assertEqual(Version(8, 0), runtime_ios_8.version)
         self.assertEqual(11, len(runtime_ios_8.devices))
 
         device_iphone_4s = runtime_ios_8.devices[0]
@@ -208,7 +208,7 @@
         self.assertEqual('com.apple.CoreSimulator.SimRuntime.iOS-8-0-Internal', runtime_ios_8_internal.identifier)
         self.assertEqual(False, runtime_ios_8_internal.available)
         self.assertEqual(True, runtime_ios_8_internal.is_internal_runtime)
-        self.assertEqual(Version([8, 0]), runtime_ios_8_internal.version)
+        self.assertEqual(Version(8, 0), runtime_ios_8_internal.version)
         self.assertEqual(0, len(runtime_ios_8_internal.devices))
 
         runtime_ios_8_4 = simulator.runtimes[2]
@@ -215,7 +215,7 @@
         self.assertEqual('com.apple.CoreSimulator.SimRuntime.iOS-8-4', runtime_ios_8_4.identifier)
         self.assertEqual(True, runtime_ios_8_4.available)
         self.assertEqual(False, runtime_ios_8_4.is_internal_runtime)
-        self.assertEqual(Version([8, 4, 1]), runtime_ios_8_4.version)
+        self.assertEqual(Version(8, 4, 1), runtime_ios_8_4.version)
         self.assertEqual(0, len(runtime_ios_8_4.devices))
 
         runtime_tvos_9 = simulator.runtimes[3]
@@ -222,7 +222,7 @@
         self.assertEqual('com.apple.CoreSimulator.SimRuntime.tvOS-9-0', runtime_tvos_9.identifier)
         self.assertEqual(True, runtime_tvos_9.available)
         self.assertEqual(False, runtime_tvos_9.is_internal_runtime)
-        self.assertEqual(Version([9, 0]), runtime_tvos_9.version)
+        self.assertEqual(Version(9, 0), runtime_tvos_9.version)
         self.assertEqual(1, len(runtime_tvos_9.devices))
 
         device_apple_tv_1080p = runtime_tvos_9.devices[0]
@@ -235,7 +235,7 @@
         self.assertEqual('com.apple.CoreSimulator.SimRuntime.watchOS-2-0', runtime_watchos_2.identifier)
         self.assertEqual(True, runtime_watchos_2.available)
         self.assertEqual(False, runtime_watchos_2.is_internal_runtime)
-        self.assertEqual(Version([2, 0]), runtime_watchos_2.version)
+        self.assertEqual(Version(2, 0), runtime_watchos_2.version)
         self.assertEqual(2, len(runtime_watchos_2.devices))
 
         runtime_ios_10 = simulator.runtimes[5]
@@ -242,7 +242,7 @@
         self.assertEqual('com.apple.CoreSimulator.SimRuntime.iOS-10-0', runtime_ios_10.identifier)
         self.assertEqual(True, runtime_ios_10.available)
         self.assertEqual(False, runtime_ios_10.is_internal_runtime)
-        self.assertEqual(Version([10, 0]), runtime_ios_10.version)
+        self.assertEqual(Version(10, 0), runtime_ios_10.version)
         self.assertEqual(0, len(runtime_ios_10.devices))
 
         device_apple_watch_38mm = runtime_watchos_2.devices[0]
@@ -316,7 +316,7 @@
         self.assertEqual('com.apple.CoreSimulator.SimRuntime.iOS-8-0', runtime_ios_8.identifier)
         self.assertEqual(True, runtime_ios_8.available)
         self.assertEqual(False, runtime_ios_8.is_internal_runtime)
-        self.assertEqual(Version([8, 0]), runtime_ios_8.version)
+        self.assertEqual(Version(8, 0), runtime_ios_8.version)
         self.assertEqual(1, len(runtime_ios_8.devices))
 
         device_iphone_4s = runtime_ios_8.devices[0]
@@ -329,7 +329,7 @@
         self.assertEqual('com.apple.CoreSimulator.SimRuntime.iOS-8-0-Internal', runtime_ios_8_internal.identifier)
         self.assertEqual(False, runtime_ios_8_internal.available)
         self.assertEqual(True, runtime_ios_8_internal.is_internal_runtime)
-        self.assertEqual(Version([8, 0]), runtime_ios_8_internal.version)
+        self.assertEqual(Version(8, 0), runtime_ios_8_internal.version)
         self.assertEqual(0, len(runtime_ios_8_internal.devices))
 
     def test_device_pairs(self):
@@ -357,7 +357,7 @@
         self.assertEqual('com.apple.CoreSimulator.SimRuntime.iOS-8-0', runtime_ios_8.identifier)
         self.assertEqual(True, runtime_ios_8.available)
         self.assertEqual(False, runtime_ios_8.is_internal_runtime)
-        self.assertEqual(Version([8, 0]), runtime_ios_8.version)
+        self.assertEqual(Version(8, 0), runtime_ios_8.version)
         self.assertEqual(1, len(runtime_ios_8.devices))
 
         device_iphone_4s = runtime_ios_8.devices[0]
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to