from pathlib import Path from click.testing import CliRunner from unittest.mock import patch from browser_cli.cli import main, _project_version def _expected_version() -> str: pyproject = Path(__file__).resolve().parent.parent / "pyproject.toml" for line in pyproject.read_text(encoding="utf-8").splitlines(): if line.startswith("version = "): return line.split('"')[1] raise AssertionError("version not found in pyproject.toml") def test_short_version_option(): result = CliRunner().invoke(main, ["-V"]) assert result.exit_code == 0 assert result.output.strip() == _expected_version() def test_long_version_option(): result = CliRunner().invoke(main, ["--version"]) assert result.exit_code == 0 assert result.output.strip() == _expected_version() def test_project_version_falls_back_to_installed_package_metadata(): with patch("browser_cli.cli.Path.read_text", side_effect=OSError), patch( "browser_cli.cli.package_version", return_value="9.9.9" ): assert _project_version() == "9.9.9"