import mozunit
import pytest
from mozrelease.versions import (
AncientMozillaVersion,
ModernMozillaVersion,
MozillaVersion,
)
ALL_VERSIONS = [ "3.0",
"3.0.1",
"3.0.2",
"3.0.3",
"3.0.4",
"3.0.5",
"3.0.6",
"3.0.7",
"3.0.8",
"3.0.9",
"3.0.10",
"3.0.11",
"3.0.12",
"3.0.13",
"3.0.14",
"3.0.15",
"3.0.16",
"3.0.17",
"3.0.18",
"3.0.19",
"3.1b1",
"3.1b2",
"3.1b3",
"3.5b4",
"3.5b99",
"3.5rc1",
"3.5rc2",
"3.5rc3",
"3.5",
"3.5.1",
"3.5.2",
"3.5.3",
"3.5.4",
"3.5.5",
"3.5.6",
"3.5.7",
"3.5.8",
"3.5.9",
"3.5.10",
"4.0b9",
"10.0.2esr",
"10.0.3esr",
"32.0",
"49.0a1",
"49.0a2",
"59.0",
"60.0",
"60.0esr",
"60.0.1esr",
"60.1",
"60.1esr",
"61.0",
]
@pytest.fixture(
scope="function",
params=range(len(ALL_VERSIONS) - 1),
ids=lambda x: f"{ALL_VERSIONS[x]}, {ALL_VERSIONS[x + 1]}",
)
def comparable_versions(request):
index = request.param
return ALL_VERSIONS[index], ALL_VERSIONS[index + 1]
@pytest.mark.parametrize("version", ALL_VERSIONS)
def test_versions_parseable(version):
assert MozillaVersion(version) is not None
def test_versions_compare_less(comparable_versions):
smaller_version, larger_version = comparable_versions
assert MozillaVersion(smaller_version) < MozillaVersion(larger_version)
def test_versions_compare_greater(comparable_versions):
smaller_version, larger_version = comparable_versions
assert MozillaVersion(larger_version) > MozillaVersion(smaller_version)
def test_ModernMozillaVersion():
assert isinstance(MozillaVersion("1.2.4"), ModernMozillaVersion)
assert isinstance(MozillaVersion("1.2.4rc3"), ModernMozillaVersion)
assert MozillaVersion("1.2rc3") == MozillaVersion("1.2.0rc3")
def test_AncientMozillaVersion():
assert isinstance(MozillaVersion("1.2.0.4"), AncientMozillaVersion)
assert isinstance(MozillaVersion("1.2.0.4pre1"), AncientMozillaVersion)
assert MozillaVersion("1.2pre1") == MozillaVersion("1.2.0pre1")
assert MozillaVersion("1.2.0.4pre1") == MozillaVersion("1.2.4pre1")
@pytest.mark.parametrize("version", ALL_VERSIONS)
def test_versions_compare_equal(version):
assert MozillaVersion(version) == MozillaVersion(version)
if __name__ == "__main__":
mozunit.main()