Coverage for sonar_backend/version.py: 40%
25 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-10 03:22 +0000
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-10 03:22 +0000
1import os
2from pathlib import Path
3import tomllib
5UNKNOWN_VERSION = "0+unknown"
8def _read_version_file() -> str | None:
9 for parent in Path(__file__).resolve().parents:
10 version_file = parent / "VERSION"
11 if version_file.is_file():
12 version = version_file.read_text(encoding="utf-8").strip()
13 if version:
14 return version
15 return None
18def _read_pyproject_version() -> str | None:
19 for parent in Path(__file__).resolve().parents:
20 pyproject = parent / "pyproject.toml"
21 if pyproject.is_file():
22 with pyproject.open("rb") as f:
23 metadata = tomllib.load(f)
24 return metadata["tool"]["poetry"]["version"]
25 return None
28def get_version() -> str:
29 env_version = os.environ.get("SONAR_VERSION", "").strip()
30 if env_version:
31 return env_version
32 return _read_version_file() or _read_pyproject_version() or UNKNOWN_VERSION