43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
import tomllib
|
|
from importlib.metadata import PackageNotFoundError
|
|
from importlib.metadata import version as distribution_version
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
import free_claude_code.core.version as version_module
|
|
|
|
|
|
def test_package_version_uses_installed_distribution_metadata() -> None:
|
|
assert version_module.package_version() == distribution_version("free-claude-code")
|
|
|
|
|
|
def test_package_version_has_explicit_uninstalled_source_fallback(
|
|
monkeypatch: pytest.MonkeyPatch,
|
|
) -> None:
|
|
def missing(_distribution_name: str) -> str:
|
|
raise PackageNotFoundError("free-claude-code")
|
|
|
|
monkeypatch.setattr(version_module, "distribution_version", missing)
|
|
|
|
assert version_module.package_version() == "0+unknown"
|
|
|
|
|
|
def test_package_version_does_not_hide_invalid_installed_metadata(
|
|
monkeypatch: pytest.MonkeyPatch,
|
|
) -> None:
|
|
def invalid(_distribution_name: str) -> str:
|
|
raise ValueError("invalid metadata")
|
|
|
|
monkeypatch.setattr(version_module, "distribution_version", invalid)
|
|
|
|
with pytest.raises(ValueError, match="invalid metadata"):
|
|
version_module.package_version()
|
|
|
|
|
|
def test_project_release_version_matches_installed_metadata() -> None:
|
|
repo_root = Path(__file__).resolve().parents[2]
|
|
pyproject = tomllib.loads((repo_root / "pyproject.toml").read_text("utf-8"))
|
|
|
|
assert pyproject["project"]["version"] == distribution_version("free-claude-code")
|