36 lines
1.5 KiB
Python
36 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
import tomllib
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
def _version_tuple(version: str) -> tuple[int, ...]:
|
|
return tuple(int(part) for part in version.split("."))
|
|
|
|
|
|
def test_mcp_http_transport_dependencies_are_locked_at_fixed_versions() -> None:
|
|
pyproject = tomllib.loads((ROOT / "pyproject.toml").read_text(encoding="utf-8"))
|
|
constraints = pyproject["tool"]["uv"]["constraint-dependencies"]
|
|
assert "httpcore2>=2.10.0" in constraints
|
|
assert "httpx2>=2.12.0" in constraints
|
|
|
|
lock = tomllib.loads((ROOT / "uv.lock").read_text(encoding="utf-8"))
|
|
packages = {package["name"]: package for package in lock["package"]}
|
|
|
|
mcp_dependencies = {dependency["name"] for dependency in packages["mcp"]["dependencies"]}
|
|
httpx2_dependencies = {dependency["name"] for dependency in packages["httpx2"]["dependencies"]}
|
|
assert "httpx2" in mcp_dependencies
|
|
assert "httpcore2" in httpx2_dependencies
|
|
assert _version_tuple(packages["httpcore2"]["version"]) >= (2, 10, 0)
|
|
assert _version_tuple(packages["httpx2"]["version"]) >= (2, 12, 0)
|
|
|
|
requirements = {}
|
|
for line in (ROOT / "requirements.lock").read_text(encoding="utf-8").splitlines():
|
|
if "==" in line:
|
|
name, version = line.split("==", maxsplit=1)
|
|
requirements[name] = version
|
|
assert requirements["httpcore2"] == packages["httpcore2"]["version"]
|
|
assert requirements["httpx2"] == packages["httpx2"]["version"]
|