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")