1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
"""Test match."""
import pytest
from awesomeversion import AwesomeVersion
from awesomeversion.strategy import AwesomeVersionStrategy
from awesomeversion.typing import VersionType
@pytest.mark.parametrize(
"version,strategy",
[
*[
(v, AwesomeVersionStrategy.BUILDVER)
for v in (
"1",
"123",
"0",
)
],
*[
(v, AwesomeVersionStrategy.CALVER)
for v in (
"20.1.0",
"20.1",
"2021.1.0.0",
)
],
*[
(v, AwesomeVersionStrategy.PEP440)
for v in (
"1.0a1",
"1.0.dev1",
"1.0b2.post345.dev456",
"1.dev0",
"1.0.dev456",
"1.0a1",
"1.0a2.dev456",
"1.0a12.dev456",
"1.0a12",
"1.0b1.dev456",
"1.0b2",
"1.0+local.1.2.3",
"1.0b2.post345.dev456",
"1.0b2.post345",
"1.0rc1.dev456",
"1.0rc1",
"1.0.post456.dev34",
"1.0.post456",
"1.1.dev1",
"1.1-dev1",
"1.1dev1",
"1.1_dev1",
)
],
*[
(v, AwesomeVersionStrategy.SEMVER)
for v in (
"0.118.0",
"1.0.0-alpha",
"1.0.0-alpha+1.2",
"1.0.0",
"1.2.3",
"1.8.2-beta.1.10",
"1.8.2-beta.1.13",
"2.1.3",
"2.4.6-8",
"1.8.2-beta.1.10+somebuild",
)
],
*[
(v, AwesomeVersionStrategy.SIMPLEVER)
for v in (
"1.0",
"0.1",
"1.2.3.4.5",
)
],
*[
(v, AwesomeVersionStrategy.SPECIALCONTAINER)
for v in (
"beta",
"dev",
"latest",
"stable",
)
],
*[
(v, AwesomeVersionStrategy.UNKNOWN)
for v in (
"",
"unknown",
None,
False,
True,
str,
AwesomeVersionStrategy,
)
],
],
)
def test_strategy_match(version: VersionType, strategy: AwesomeVersionStrategy) -> None:
"""Test that the version matches the expected strategy."""
assert AwesomeVersion(version).strategy == strategy
if strategy != AwesomeVersionStrategy.UNKNOWN:
awesome_version = AwesomeVersion(
version,
ensure_strategy=strategy,
find_first_match=True,
)
assert awesome_version.valid
assert awesome_version.strategy == strategy
|