mirror of
https://github.com/shy3130/tick-stock-panel.git
synced 2026-11-02 10:26:13 +00:00
38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
"""版本号单一来源: app.__version__ 运行时从 frontend/package.json 加载。
|
|
|
|
dev 模式读仓库文件, PyInstaller 冻结后读 _MEIPASS/package.json (tsp.spec 收集),
|
|
两者必须返回同一版本 —— 保证安装包、页面徽标、更新检查的"当前版本"永不漂移。
|
|
"""
|
|
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import app as app_pkg
|
|
from app import __version__
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parents[2]
|
|
PKG_JSON = REPO_ROOT / "frontend" / "package.json"
|
|
|
|
|
|
def test_dev_version_matches_package_json():
|
|
"""dev 模式: __version__ 与 frontend/package.json 完全一致。"""
|
|
assert __version__ == json.loads(PKG_JSON.read_text(encoding="utf-8"))["version"]
|
|
|
|
|
|
def test_frozen_reads_mepass_package_json(monkeypatch, tmp_path):
|
|
"""frozen 模式: 从 _MEIPASS/package.json 读版本 (tsp.spec 收集的那份)。"""
|
|
(tmp_path / "package.json").write_text(
|
|
json.dumps({"version": "9.9.9"}), encoding="utf-8"
|
|
)
|
|
monkeypatch.setattr(sys, "frozen", True, raising=False)
|
|
monkeypatch.setattr(sys, "_MEIPASS", str(tmp_path), raising=False)
|
|
assert app_pkg._load_version() == "9.9.9"
|
|
|
|
|
|
def test_frozen_missing_file_falls_back(monkeypatch, tmp_path):
|
|
"""frozen 模式文件缺失/损坏: 回退硬编码值, 不抛异常 (版本读取不能阻塞启动)。"""
|
|
monkeypatch.setattr(sys, "frozen", True, raising=False)
|
|
monkeypatch.setattr(sys, "_MEIPASS", str(tmp_path), raising=False) # 空目录
|
|
assert app_pkg._load_version() == app_pkg._FALLBACK_VERSION
|