feat(build): version release résolue au build avec repli dev (P1-7)

Crée gui_v6/version.py (DEFAULT_VERSION + resolve_version()) qui tente
d'importer gui_v6._build_version (généré au build Windows, non commité).
Câble gui_v6.__version__ sur resolve_version(). Ajoute gui_v6/_build_version.py
au .gitignore et aux hiddenimports du spec PyInstaller. 4 tests TDD.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-02 11:02:57 +02:00
parent 8f9107a27f
commit 5f05ba0fb8
5 changed files with 64 additions and 1 deletions

View File

@@ -0,0 +1,37 @@
"""Tests de la résolution de version GUI V6 (P1-7, Plan 3).
La version release (schéma 2026.MM.JJ.HHMM) est générée au build Windows dans
gui_v6/_build_version.py (non commité). En dev, repli sur la version par défaut.
"""
import sys
import types
import pytest
from gui_v6.version import DEFAULT_VERSION, resolve_version
def test_resolve_version_sans_module_build_retourne_defaut(monkeypatch):
monkeypatch.setitem(sys.modules, "gui_v6._build_version", None)
# sys.modules[name] = None => ImportError au `from ... import`
assert resolve_version() == DEFAULT_VERSION
def test_resolve_version_avec_module_build_retourne_version_injectee(monkeypatch):
fake = types.ModuleType("gui_v6._build_version")
fake.BUILD_VERSION = "2026.07.02.1130"
monkeypatch.setitem(sys.modules, "gui_v6._build_version", fake)
assert resolve_version() == "2026.07.02.1130"
def test_resolve_version_build_version_vide_retourne_defaut(monkeypatch):
fake = types.ModuleType("gui_v6._build_version")
fake.BUILD_VERSION = ""
monkeypatch.setitem(sys.modules, "gui_v6._build_version", fake)
assert resolve_version() == DEFAULT_VERSION
def test_dunder_version_est_cable_sur_resolve_version():
import gui_v6
# En dev (pas de _build_version généré), __version__ == défaut.
assert gui_v6.__version__ == DEFAULT_VERSION