Files
gitea-actions e3d56f4c22 Binárka má vědět, která je
Venku jsou čtyři soubory na release, tři systémy a k tomu zdrojáky. Když
někdo napíše, že mu něco nefunguje, není jak zjistit, co vlastně pustil.

Verzi zapisuje build.sh do verze.txt, kostky.spec ji přibalí a version.py ji
z rozbalené binárky přečte. Ze zdrojáků má přednost git describe, který ví
i o commitech nad tagem a o rozdělané práci. V CI se na tagu vnucuje
proměnnou, protože runner klonuje jeden commit bez značek.

Hlásí se přes --version, v úvodní hlášce serveru a v patičce každé stránky.
Zkouška v obou workflow ověří, že se do binárky opravdu dostala.
2026-08-22 18:26:32 +02:00

49 lines
1.7 KiB
Python

"""Verze se musí poznat i z binárky, kde žádný git není."""
import pytest
import version
@pytest.fixture(autouse=True)
def bez_pameti():
"""`current()` si výsledek pamatuje; mezi testy je potřeba čistý stůl."""
version.current.cache_clear()
yield
version.current.cache_clear()
def test_z_binarky_se_cte_pribaleny_soubor(monkeypatch, tmp_path):
"""V binárce leží verze.txt v dočasném adresáři vedle šablon."""
(tmp_path / version.NAME).write_text("v9.9.9\n", encoding="utf-8")
monkeypatch.setattr(version.sys, "frozen", True, raising=False)
monkeypatch.setattr(version.sys, "_MEIPASS", str(tmp_path), raising=False)
assert version.current() == "v9.9.9"
def test_binarka_se_gitu_nepta(monkeypatch, tmp_path):
"""Na cizím počítači žádný repozitář není a ptát se nemá koho."""
monkeypatch.setattr(version.sys, "frozen", True, raising=False)
monkeypatch.setattr(version.sys, "_MEIPASS", str(tmp_path), raising=False)
monkeypatch.setattr(version, "described",
lambda: pytest.fail("binárka se ptala gitu"))
assert version.current() == version.UNKNOWN
def test_ze_zdrojaku_ma_prednost_git(monkeypatch):
monkeypatch.delattr(version.sys, "frozen", raising=False)
monkeypatch.setattr(version, "described", lambda: "v1.2.3-4-gabcdef")
monkeypatch.setattr(version, "bundled", lambda: "v1.0.0")
assert version.current() == "v1.2.3-4-gabcdef"
def test_bez_gitu_a_bez_souboru_zbyde_neznama(monkeypatch):
monkeypatch.delattr(version.sys, "frozen", raising=False)
monkeypatch.setattr(version, "described", lambda: "")
monkeypatch.setattr(version, "bundled", lambda: "")
assert version.current() == version.UNKNOWN