| Differences between
and this patch
- a/Tools/ChangeLog +18 lines
Lines 1-3 a/Tools/ChangeLog_sec1
1
2021-10-08  Jonathan Bedard  <jbedard@apple.com>
2
3
        [webkitcorepy] Not possible to autoinstall a package with micro version 0
4
        https://bugs.webkit.org/show_bug.cgi?id=230540
5
        <rdar://problem/83613371>
6
7
        Reviewed by NOBODY (OOPS!).
8
9
        * Scripts/libraries/webkitcorepy/webkitcorepy/tests/version_unittest.py:
10
        (VersionTestCase.test_int_constructor): Default values are 'None.'
11
        * Scripts/libraries/webkitcorepy/webkitcorepy/version.py:
12
        (Version.from_iterable):
13
        (Version.__init__): Use 'None' as the default value instead of 0.
14
        (Version.__setitem__): Support 'None' as a version value.
15
        (Version.__contains__): Ditto.
16
        (Version.__hash__): Ditto.
17
        (Version.__cmp__): Ditto.
18
1
2021-10-08  Carlos Garcia Campos  <cgarcia@igalia.com>
19
2021-10-08  Carlos Garcia Campos  <cgarcia@igalia.com>
2
20
3
        [WebDriver] Update w3c and selenium tests
21
        [WebDriver] Update w3c and selenium tests
- a/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/version_unittest.py -4 / +4 lines
Lines 52-61 class VersionTestCase(unittest.TestCase): a/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/version_unittest.py_sec1
52
    def test_int_constructor(self):
52
    def test_int_constructor(self):
53
        v = Version(1)
53
        v = Version(1)
54
        self.assertEqual(v.major, 1)
54
        self.assertEqual(v.major, 1)
55
        self.assertEqual(v.minor, 0)
55
        self.assertEqual(v.minor, None)
56
        self.assertEqual(v.tiny, 0)
56
        self.assertEqual(v.tiny, None)
57
        self.assertEqual(v.micro, 0)
57
        self.assertEqual(v.micro, None)
58
        self.assertEqual(v.nano, 0)
58
        self.assertEqual(v.nano, None)
59
59
60
    def test_len(self):
60
    def test_len(self):
61
        self.assertEqual(len(Version(1, 2, 3, 4, 5)), 5)
61
        self.assertEqual(len(Version(1, 2, 3, 4, 5)), 5)
- a/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/version.py -15 / +16 lines
Lines 37-43 class Version(object): a/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/version.py_sec1
37
    def from_iterable(val):
37
    def from_iterable(val):
38
        result = Version()
38
        result = Version()
39
        for i in range(len(val)):
39
        for i in range(len(val)):
40
            result[i] = int(val[i])
40
            result[i] = None if val[i] is None else int(val[i])
41
        return result
41
        return result
42
42
43
    @staticmethod
43
    @staticmethod
Lines 45-56 class Version(object): a/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/version.py_sec2
45
        from webkitpy.common.version_name_map import VersionNameMap
45
        from webkitpy.common.version_name_map import VersionNameMap
46
        return VersionNameMap.map().from_name(name)[1]
46
        return VersionNameMap.map().from_name(name)[1]
47
47
48
    def __init__(self, major=0, minor=0, tiny=0, micro=0, nano=0):
48
    def __init__(self, major=0, minor=None, tiny=None, micro=None, nano=None):
49
        self.major = int(major)
49
        self.major = int(major)
50
        self.minor = int(minor)
50
        self.minor = None if minor is None else int(minor)
51
        self.tiny = int(tiny)
51
        self.tiny = None if tiny is None else int(tiny)
52
        self.micro = int(micro)
52
        self.micro = None if micro is None else int(micro)
53
        self.nano = int(nano)
53
        self.nano = None if nano is None else int(nano)
54
54
55
    def __len__(self):
55
    def __len__(self):
56
        return 5
56
        return 5
Lines 75-95 class Version(object): a/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/version.py_sec3
75
        raise ValueError('Expected version key to be string or integer')
75
        raise ValueError('Expected version key to be string or integer')
76
76
77
    def __setitem__(self, key, value):
77
    def __setitem__(self, key, value):
78
        value = None if value is None else int(value)
78
        if isinstance(key, int):
79
        if isinstance(key, int):
79
            if key == 0:
80
            if key == 0:
80
                self.major = int(value)
81
                self.major = value
81
                return self.major
82
                return self.major
82
            elif key == 1:
83
            elif key == 1:
83
                self.minor = int(value)
84
                self.minor = value
84
                return self.minor
85
                return self.minor
85
            elif key == 2:
86
            elif key == 2:
86
                self.tiny = int(value)
87
                self.tiny = value
87
                return self.tiny
88
                return self.tiny
88
            elif key == 3:
89
            elif key == 3:
89
                self.micro = int(value)
90
                self.micro = value
90
                return self.micro
91
                return self.micro
91
            elif key == 4:
92
            elif key == 4:
92
                self.nano = int(value)
93
                self.nano = value
93
                return self.nano
94
                return self.nano
94
            raise ValueError('Version key must be between 0 and 4')
95
            raise ValueError('Version key must be between 0 and 4')
95
        elif isinstance(key, str):
96
        elif isinstance(key, str):
Lines 136-144 class Version(object): a/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/version.py_sec4
136
        assert isinstance(version, Version)
137
        assert isinstance(version, Version)
137
        does_match = True
138
        does_match = True
138
        for i in range(len(version)):
139
        for i in range(len(version)):
139
            if self[i] != version[i]:
140
            if (self[i] or 0) != (version[i] or 0):
140
                does_match = False
141
                does_match = False
141
            if not does_match and self[i] != 0:
142
            if not does_match and self[i] is not None:
142
                return False
143
                return False
143
        return True
144
        return True
144
145
Lines 156-169 class Version(object): a/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/version.py_sec5
156
        result = 0
157
        result = 0
157
        for index in range(len(self)):
158
        for index in range(len(self)):
158
            result *= 1000
159
            result *= 1000
159
            result += self[index]
160
            result += -1 if self[index] is None else self[index]
160
        return result
161
        return result
161
162
162
    def __cmp__(self, other):
163
    def __cmp__(self, other):
163
        if other is None:
164
        if other is None:
164
            return 1
165
            return 1
165
        for i in range(len(self)):
166
        for i in range(len(self)):
166
            diff = self[i] - other[i]
167
            diff = (self[i] or 0) - (other[i] or 0)
167
            if diff:
168
            if diff:
168
                return diff
169
                return diff
169
        return 0
170
        return 0

Return to Bug 230540