uv/crates/pep440-rs/test/test_python.py
konsti 79fbac7af5
Fast lint CI job: Rustfmt, Prettier, Ruff (#2406)
Add a single job for for fast lint tools. Rustfmt for rust, ruff for
python formatting and linting, prettier avoids inconsistent formatter
changes between pycharm and vscode.
2024-03-20 00:16:46 +00:00

49 lines
1.7 KiB
Python

"""
This is implementation has some very rudimentary python bindings
"""
from pep440_rs import Version, VersionSpecifier, Operator, VersionSpecifiers
def test_pep440():
assert Version("1.1a1").any_prerelease()
assert Version("1.1.dev2").any_prerelease()
assert not Version("1.1").any_prerelease()
assert VersionSpecifier(">=1.0").contains(Version("1.1a1"))
assert not VersionSpecifier(">=1.1").contains(Version("1.1a1"))
assert Version("1.1") >= Version("1.1a1")
assert Version("2.0") in VersionSpecifier("==2")
assert Version("2.1").major == 2
assert Version("2.1").minor == 1
assert Version("2.1").micro == 0
def test_version_specifier():
assert VersionSpecifier(">=1.1").version == Version("1.1")
assert VersionSpecifier(">=1.1").operator == Operator.GreaterThanEqual
assert str(VersionSpecifier(">=1.1").operator) == ">="
# Note: This removes the star
assert VersionSpecifier("==1.1.*").version == Version("1.1")
assert str(VersionSpecifier("==1.1.*").operator) == "=="
assert {
VersionSpecifier("==1.1.*"),
VersionSpecifier("==1.1"),
VersionSpecifier("==1.1"),
} == {VersionSpecifier("==1.1.*"), VersionSpecifier("==1.1")}
def test_version_specifiers():
assert str(VersionSpecifiers(">=1.1, <2.0")) == ">=1.1, <2.0"
assert list(VersionSpecifiers(">=1.1, <2.0")) == [
VersionSpecifier(">=1.1"),
VersionSpecifier("<2.0"),
]
def test_normalization():
assert str(Version("1.19-alpha.1")) == "1.19a1"
assert str(VersionSpecifier(" >=1.19-alpha.1 ")) == ">=1.19a1"
assert repr(Version("1.19-alpha.1")) == '<Version("1.19a1")>'
assert (
repr(VersionSpecifier(" >=1.19-alpha.1 ")) == '<VersionSpecifier(">=1.19a1")>'
)