mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
101 lines
2.5 KiB
Python
101 lines
2.5 KiB
Python
import pytest
|
|
from packaging.version import Version
|
|
|
|
from galaxy.tool_util.version import (
|
|
LegacyVersion,
|
|
parse_version,
|
|
)
|
|
|
|
# This list must be in the correct sorting order
|
|
VERSIONS = [
|
|
# Implicit epoch of 0
|
|
"1.0.dev456",
|
|
"1.0a1",
|
|
"1.0a2.dev456",
|
|
"1.0a12.dev456",
|
|
"1.0a12",
|
|
"1.0b1.dev456",
|
|
"1.0b2",
|
|
"1.0b2.post345.dev456",
|
|
"1.0b2.post345",
|
|
"1.0b2-346",
|
|
"1.0c1.dev456",
|
|
"1.0c1",
|
|
"1.0rc2",
|
|
"1.0c3",
|
|
"1.0",
|
|
"1.0.post456.dev34",
|
|
"1.0.post456",
|
|
"1.1.dev1",
|
|
"1.2+123abc",
|
|
"1.2+123abc456",
|
|
"1.2+abc",
|
|
"1.2+abc123",
|
|
"1.2+abc123def",
|
|
"1.2+1234.abc",
|
|
"1.2+123456",
|
|
"1.2.r32+123456",
|
|
"1.2.rev33+123456",
|
|
# Explicit epoch of 1
|
|
"1!1.0.dev456",
|
|
"1!1.0a1",
|
|
"1!1.0a2.dev456",
|
|
"1!1.0a12.dev456",
|
|
"1!1.0a12",
|
|
"1!1.0b1.dev456",
|
|
"1!1.0b2",
|
|
"1!1.0b2.post345.dev456",
|
|
"1!1.0b2.post345",
|
|
"1!1.0b2-346",
|
|
"1!1.0c1.dev456",
|
|
"1!1.0c1",
|
|
"1!1.0rc2",
|
|
"1!1.0c3",
|
|
"1!1.0",
|
|
"1!1.0.post456.dev34",
|
|
"1!1.0.post456",
|
|
"1!1.1.dev1",
|
|
"1!1.2+123abc",
|
|
"1!1.2+123abc456",
|
|
"1!1.2+abc",
|
|
"1!1.2+abc123",
|
|
"1!1.2+abc123def",
|
|
"1!1.2+1234.abc",
|
|
"1!1.2+123456",
|
|
"1!1.2.r32+123456",
|
|
"1!1.2.rev33+123456",
|
|
]
|
|
|
|
LEGACY_VERSIONS = ["foobar", "a cat is fine too", "lolwut", "1.8.1+2+galaxy0"]
|
|
|
|
|
|
@pytest.mark.parametrize("version", VERSIONS)
|
|
def test_parse_pep440_versions(version: str) -> None:
|
|
assert isinstance(parse_version(version), Version)
|
|
|
|
|
|
@pytest.mark.parametrize("version", LEGACY_VERSIONS)
|
|
def test_legacy_version_fields(version: str) -> None:
|
|
parsed_version = parse_version(version)
|
|
assert isinstance(parsed_version, LegacyVersion)
|
|
assert parsed_version.public == version
|
|
assert parsed_version.base_version == version
|
|
assert parsed_version.epoch == -1
|
|
assert parsed_version.release is None
|
|
assert parsed_version.pre is None
|
|
assert parsed_version.post is None
|
|
assert parsed_version.dev is None
|
|
assert parsed_version.local is None
|
|
assert parsed_version.is_prerelease is False
|
|
assert parsed_version.is_postrelease is False
|
|
assert parsed_version.is_devrelease is False
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"lower_ver,greater_ver",
|
|
[(VERSIONS[i], VERSIONS[i + 1]) for i in range(len(VERSIONS) - 1)]
|
|
+ [(lv, v) for v in VERSIONS for lv in LEGACY_VERSIONS],
|
|
)
|
|
def test_version_cmp(lower_ver: str, greater_ver: str) -> None:
|
|
assert parse_version(lower_ver) < parse_version(greater_ver)
|