Skip to content

Commit 6b4d3e5

Browse files
committed
test sorting of all the OpenSSL versions ever released
- closes: #46 Signed-off-by: Keshav Priyadarshi <git@keshav.space>
1 parent 33f680f commit 6b4d3e5

6 files changed

Lines changed: 1117 additions & 13 deletions

File tree

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ testing =
7373
pytest-xdist >= 2
7474
aboutcode-toolkit >= 6.0.0
7575
black
76+
commoncode
7677

7778
docs =
7879
Sphinx >= 3.3.1

src/univers/versions.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
from functools import total_ordering
88
import functools
9-
import re
109

1110
import attr
1211
import semantic_version
@@ -158,6 +157,13 @@ def __ge__(self, other):
158157
return NotImplemented
159158
return self.value.__ge__(other.value)
160159

160+
def to_dict(self):
161+
return {
162+
"string": self.string,
163+
"normalized_string": self.normalized_string,
164+
"value": str(self.value),
165+
}
166+
161167

162168
@attr.s(frozen=True, order=False, hash=True)
163169
class GenericVersion(Version):
@@ -452,17 +458,18 @@ def __lt__(self, other):
452458
return NotImplemented
453459
base_vers1 = self.value[:-1]
454460
base_vers2 = other.value[:-1]
455-
if base_vers1 == base_vers2 and (is_prerelease(self.value) or is_prerelease(other.value)):
456-
return is_prerelease1_lt_prerelease2(self.value, other.value)
461+
# Check if versions have the same base, and `one and only one` of them is a pre-release.
462+
if base_vers1 == base_vers2 and (is_prerelease(self.value) != is_prerelease(other.value)):
463+
return is_prerelease(self.value)
457464
return self.value.__lt__(other.value)
458465

459466
def __gt__(self, other):
460467
if not isinstance(other, self.__class__):
461468
return NotImplemented
462469
base_vers1 = self.value[:-1]
463470
base_vers2 = other.value[:-1]
464-
if base_vers1 == base_vers2 and (is_prerelease(self.value) or is_prerelease(other.value)):
465-
return not is_prerelease1_lt_prerelease2(self.value, other.value)
471+
if base_vers1 == base_vers2 and (is_prerelease(self.value) != is_prerelease(other.value)):
472+
return is_prerelease(other.value)
466473
return self.value.__gt__(other.value)
467474

468475

@@ -471,14 +478,6 @@ def is_prerelease(value):
471478
return patch.startswith("-beta") or patch.startswith("-alpha")
472479

473480

474-
def is_prerelease1_lt_prerelease2(value1, value2):
475-
if is_prerelease(value1) and is_prerelease(value2):
476-
patch1 = value1[-1]
477-
patch2 = value2[-1]
478-
return patch1[1:] < patch2[1:]
479-
return is_prerelease(value1) and not is_prerelease(value2)
480-
481-
482481
@attr.s(frozen=True, order=False, eq=False, hash=True)
483482
class OpensslVersion(Version):
484483
"""
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
3.0.0
2+
3.0.1
3+
1.1.1
4+
1.1.1a
5+
1.1.1b
6+
1.1.1c
7+
1.1.1d
8+
1.1.1e
9+
1.1.1f
10+
1.1.1g
11+
1.1.1h
12+
1.1.1i
13+
1.1.1j
14+
1.1.1k
15+
1.1.1l
16+
1.1.1m
17+
1.0.2
18+
1.0.2a
19+
1.0.2b
20+
1.0.2c
21+
1.0.2d
22+
1.0.2e
23+
1.0.2f
24+
1.0.2g
25+
1.0.2h
26+
1.0.2i
27+
1.0.2j
28+
1.0.2k
29+
1.0.2l
30+
1.0.2m
31+
1.0.2n
32+
1.0.2o
33+
1.0.2p
34+
1.0.2q
35+
1.0.2r
36+
1.0.2s
37+
1.0.2t
38+
1.0.2u
39+
1.0.2v
40+
1.0.2w
41+
1.0.2x
42+
1.0.2y
43+
1.0.2za
44+
1.0.2zb
45+
1.0.2zc
46+
3.0.2
47+
1.1.1n
48+
1.0.2zd
49+
1.0.2zc-dev
50+
1.1.0
51+
1.1.0a
52+
1.1.0b
53+
1.1.0c
54+
1.1.0d
55+
1.1.0e
56+
1.1.0f
57+
1.1.0g
58+
1.1.0h
59+
1.1.0i
60+
1.1.0j
61+
1.1.0k
62+
1.1.0l
63+
1.0.1
64+
1.0.1a
65+
1.0.1b
66+
1.0.1c
67+
1.0.1d
68+
1.0.1e
69+
1.0.1f
70+
1.0.1g
71+
1.0.1h
72+
1.0.1i
73+
1.0.1j
74+
1.0.1k
75+
1.0.1l
76+
1.0.1m
77+
1.0.1n
78+
1.0.1o
79+
1.0.1p
80+
1.0.1q
81+
1.0.1r
82+
1.0.1s
83+
1.0.1t
84+
1.0.1u
85+
0.9.8
86+
0.9.8a
87+
0.9.8b
88+
0.9.8c
89+
0.9.8d
90+
0.9.8e
91+
0.9.8f
92+
0.9.8g
93+
0.9.8h
94+
0.9.8i
95+
0.9.8j
96+
0.9.8k
97+
0.9.8l
98+
0.9.8m
99+
0.9.8n
100+
0.9.8o
101+
0.9.8p
102+
0.9.8q
103+
0.9.8r
104+
0.9.8s
105+
0.9.8t
106+
0.9.8u
107+
0.9.8v
108+
0.9.8w
109+
0.9.8x
110+
0.9.8y
111+
0.9.8za
112+
0.9.8zb
113+
0.9.8zc
114+
0.9.8zd
115+
0.9.8ze
116+
1.0.0
117+
1.0.0a
118+
1.0.0b
119+
1.0.0c
120+
1.0.0d
121+
1.0.0e
122+
1.0.0f
123+
1.0.0g
124+
1.0.0i
125+
1.0.0j
126+
1.0.0k
127+
1.0.0l
128+
1.0.0m
129+
1.0.0n
130+
1.0.0o
131+
1.0.0p
132+
1.0.0q
133+
0.9.8zf
134+
1.0.0r
135+
0.9.8zg
136+
1.0.0h
137+
1.0.0s
138+
1.0.0t
139+
0.9.8zh
140+
0.9.6
141+
0.9.6a
142+
0.9.6b
143+
0.9.6c
144+
0.9.6d
145+
0.9.6e
146+
0.9.7-beta3
147+
0.9.7-beta5
148+
0.9.7-beta1
149+
0.9.7-alpha3
150+
0.9.7-alpha2
151+
0.9.7
152+
0.9.6f
153+
0.9.6g
154+
0.9.6h
155+
0.9.7a
156+
0.9.6i
157+
0.9.6j
158+
0.9.7b
159+
0.9.7c
160+
0.9.6k
161+
0.9.6l
162+
0.9.7d
163+
0.9.6m
164+
0.9.7e
165+
0.9.7f
166+
0.9.6-cvs
167+
0.9.7g
168+
0.9.7h
169+
0.9.7i
170+
0.9.7j
171+
0.9.7k
172+
0.9.7l

0 commit comments

Comments
 (0)