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

1import os 

2from pathlib import Path 

3import tomllib 

4 

5UNKNOWN_VERSION = "0+unknown" 

6 

7 

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 

16 

17 

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 

26 

27 

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