From fd400a79ef7c4369404ea09470661c908ac773a3 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 2 Sep 2026 07:42:04 +0800 Subject: [PATCH] fix: log application update checks --- app/adapters/system/update.py | 7 ++++++- tests/test_system_update_manager.py | 25 +++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/app/adapters/system/update.py b/app/adapters/system/update.py index c93c9ad9e..f816f7938 100644 --- a/app/adapters/system/update.py +++ b/app/adapters/system/update.py @@ -379,7 +379,8 @@ class SystemUpdateManager(metaclass=SingletonClass): if not release: raise RuntimeError("未找到可用的 v3 稳定版本") version = str(release["tag_name"]) - has_update = compare_version(version, "gt", get_app_version()) is True + current_version = get_app_version() + has_update = compare_version(version, "gt", current_version) is True self._write_item( _APPLICATION, state="available" if has_update else "idle", @@ -395,6 +396,10 @@ class SystemUpdateManager(metaclass=SingletonClass): can_update=has_update, can_install=False, ) + if has_update: + logger.info(f"发现 MoviePilot 主程序更新:{current_version} -> {version}") + else: + logger.info(f"MoviePilot 主程序已是最新版本:{current_version}") def _check_resources(self) -> None: """查询当前平台认证资源和索引资源的最新版本。""" diff --git a/tests/test_system_update_manager.py b/tests/test_system_update_manager.py index 16cf4b167..d11593783 100644 --- a/tests/test_system_update_manager.py +++ b/tests/test_system_update_manager.py @@ -30,6 +30,7 @@ def _response(payload, status_code=200): def test_check_exposes_new_stable_release(monkeypatch, tmp_path): manager = _manager(monkeypatch, tmp_path) + logs = [] releases = [ {"tag_name": "v3.2.0-beta", "prerelease": True, "draft": False}, { @@ -43,6 +44,7 @@ def test_check_exposes_new_stable_release(monkeypatch, tmp_path): ] monkeypatch.setattr(manager, "_request", lambda: SimpleNamespace(get_res=lambda _url: _response(releases))) monkeypatch.setattr(update_module, "get_app_version", lambda: "v3.0.0") + monkeypatch.setattr(update_module.logger, "info", logs.append) status = manager.check("application") @@ -50,6 +52,29 @@ def test_check_exposes_new_stable_release(monkeypatch, tmp_path): assert status.version == "v3.1.0" assert status.release_notes == "changes" assert status.can_update is True + assert logs == ["发现 MoviePilot 主程序更新:v3.0.0 -> v3.1.0"] + + +def test_check_logs_when_application_is_current(monkeypatch, tmp_path): + manager = _manager(monkeypatch, tmp_path) + logs = [] + releases = [ + { + "tag_name": "v3.0.0", + "name": "MoviePilot v3.0.0", + "prerelease": False, + "draft": False, + } + ] + monkeypatch.setattr(manager, "_request", lambda: SimpleNamespace(get_res=lambda _url: _response(releases))) + monkeypatch.setattr(update_module, "get_app_version", lambda: "v3.0.0") + monkeypatch.setattr(update_module.logger, "info", logs.append) + + status = manager.check("application") + + assert status.state == "idle" + assert status.can_update is False + assert logs == ["MoviePilot 主程序已是最新版本:v3.0.0"] def test_scheduled_check_failure_stays_silent(monkeypatch, tmp_path):