Skip to content

Commit be6df37

Browse files
committed
Add tests for compare_mike_version() and sort_mike_versions()
Signed-off-by: Leandro Lucarella <[email protected]>
1 parent 6d8b449 commit be6df37

File tree

1 file changed

+157
-1
lines changed

1 file changed

+157
-1
lines changed

tests/mkdocs/test_mike.py

+157-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@
1010
import pytest
1111
import semver
1212

13-
from frequenz.repo.config.mkdocs.mike import MikeVersionInfo, build_mike_version
13+
from frequenz.repo.config.mkdocs.mike import (
14+
MikeVersionInfo,
15+
build_mike_version,
16+
compare_mike_version,
17+
sort_mike_versions,
18+
)
1419
from frequenz.repo.config.version import BranchVersion, RepoVersionInfo
1520

1621

@@ -227,3 +232,154 @@ def test_build_mike_version(
227232
assert mike_version == expected_mike_version
228233
case _ as unhandled:
229234
assert_never(unhandled)
235+
236+
237+
@pytest.mark.parametrize(
238+
"version1, version2, expected",
239+
[
240+
("v1.0", "v1.0", 0),
241+
("v1.0-dev", "v1.0-dev", 0),
242+
("v1.0-pre", "v1.0-pre", 0),
243+
("v1.0", "v1.0-dev", -1),
244+
("v1.0", "v1.0-pre", 1),
245+
("v1.0-dev", "v1.0-pre", 1),
246+
("v1.0-dev", "v1.0", 1),
247+
("v1.0-pre", "v1.0", -1),
248+
("v1.0-pre", "v1.0-dev", -1),
249+
("v1.0", "v1.1", -1),
250+
("v1.0", "v1.1-dev", -1),
251+
("v1.0", "v1.1-pre", -1),
252+
("v1.0-dev", "v1.1", -1),
253+
("v1.0-dev", "v1.1-dev", -1),
254+
("v1.0-dev", "v1.1-pre", -1),
255+
("v1.0-pre", "v1.1", -1),
256+
("v1.0-pre", "v1.1-dev", -1),
257+
("v1.0-pre", "v1.1-pre", -1),
258+
("v1.1", "v1.0", 1),
259+
("v1.1", "v1.0-dev", 1),
260+
("v1.1", "v1.0-pre", 1),
261+
("v1.1-dev", "v1.0", 1),
262+
("v2.0-dev", "v1.0-dev", 1),
263+
("v2.0-pre", "v1.0-dev", 1),
264+
("v2.0", "v1.0-dev", 1),
265+
("v2.0-dev", "v1.0-pre", 1),
266+
("v2.0-pre", "v1.0-pre", 1),
267+
("v2.0", "v1.0-pre", 1),
268+
("blah", "v1.0-dev", 1),
269+
("alpha", "beta", -1),
270+
],
271+
)
272+
def test_compare_mike_version(
273+
version1: str,
274+
version2: str,
275+
expected: int,
276+
) -> None:
277+
"""Test compare_mike_version()."""
278+
assert compare_mike_version(version1, version2) == expected
279+
280+
281+
@dataclasses.dataclass(frozen=True, kw_only=True)
282+
class _SortVersionsTestCase:
283+
title: str
284+
versions: list[str]
285+
reversed: bool = True
286+
expected: list[str]
287+
288+
289+
_sort_versions_test_cases = [
290+
_SortVersionsTestCase(
291+
title="case1",
292+
versions=["v1.0", "v1.0-dev", "v1.0-pre"],
293+
expected=["v1.0-dev", "v1.0", "v1.0-pre"],
294+
),
295+
_SortVersionsTestCase(
296+
title="case2",
297+
versions=["v1.0", "v2.0", "v3.0", "v3.1"],
298+
expected=["v3.1", "v3.0", "v2.0", "v1.0"],
299+
),
300+
_SortVersionsTestCase(
301+
title="case3",
302+
versions=["v1.0", "v1.0-dev", "v1.0-pre", "v1.1", "v1.1-dev"],
303+
expected=["v1.1-dev", "v1.1", "v1.0-dev", "v1.0", "v1.0-pre"],
304+
),
305+
_SortVersionsTestCase(
306+
title="case4",
307+
versions=["v1.0", "v1.0-dev", "v1.0-pre", "v1.1", "v1.1-dev", "v1.1-pre"],
308+
expected=["v1.1-dev", "v1.1", "v1.1-pre", "v1.0-dev", "v1.0", "v1.0-pre"],
309+
),
310+
_SortVersionsTestCase(
311+
title="case5",
312+
versions=[
313+
"v1.0",
314+
"v1.0-dev",
315+
"v1.0-pre",
316+
"v0.99-pre",
317+
"v0.1",
318+
"v0.99",
319+
"v0.99-dev",
320+
"v1.1",
321+
"alpha",
322+
"v1.1-dev",
323+
"v1.1-pre",
324+
"v2.0",
325+
"blah",
326+
],
327+
expected=[
328+
"blah",
329+
"alpha",
330+
"v2.0",
331+
"v1.1-dev",
332+
"v1.1",
333+
"v1.1-pre",
334+
"v1.0-dev",
335+
"v1.0",
336+
"v1.0-pre",
337+
"v0.99-dev",
338+
"v0.99",
339+
"v0.99-pre",
340+
"v0.1",
341+
],
342+
),
343+
_SortVersionsTestCase(
344+
title="case5-not-reversed",
345+
versions=[
346+
"v1.0",
347+
"v1.0-dev",
348+
"v1.0-pre",
349+
"v0.99-pre",
350+
"v0.1",
351+
"v0.99",
352+
"v0.99-dev",
353+
"v1.1",
354+
"alpha",
355+
"v1.1-dev",
356+
"v1.1-pre",
357+
"v2.0",
358+
"blah",
359+
],
360+
reversed=False,
361+
expected=[
362+
"v0.1",
363+
"v0.99-pre",
364+
"v0.99",
365+
"v0.99-dev",
366+
"v1.0-pre",
367+
"v1.0",
368+
"v1.0-dev",
369+
"v1.1-pre",
370+
"v1.1",
371+
"v1.1-dev",
372+
"v2.0",
373+
"alpha",
374+
"blah",
375+
],
376+
),
377+
]
378+
379+
380+
@pytest.mark.parametrize("case", _sort_versions_test_cases, ids=lambda c: c.title)
381+
def test_sort_mike_versions(
382+
case: _SortVersionsTestCase,
383+
) -> None:
384+
"""Test sort_mike_versions()."""
385+
assert sort_mike_versions(case.versions, reverse=case.reversed) == case.expected

0 commit comments

Comments
 (0)