mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-11-01 04:47:03 +08:00
fix(update): accept -N hotfix suffix for stable releases
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
committed by
InfinityPacer
parent
143ed49de0
commit
82f5fca11c
@@ -65,7 +65,8 @@ class SystemUpdateManager(metaclass=SingletonClass):
|
||||
"https://github.com/jxxghp/MoviePilot/archive/refs/tags/{tag}.zip"
|
||||
)
|
||||
_VERSION_PATTERN = re.compile(r"^v3\.\d+\.\d+(?:[-.](?:alpha|beta|rc)\d*)?$", re.I)
|
||||
_STABLE_VERSION_PATTERN = re.compile(r"^v3\.\d+\.\d+$", re.I)
|
||||
# 稳定版允许 -N 后缀,用于不升小版本的临时修复(如 v3.0.10-1)
|
||||
_STABLE_VERSION_PATTERN = re.compile(r"^v3\.\d+\.\d+(?:-\d+)?$", re.I)
|
||||
|
||||
def __init__(self) -> None:
|
||||
self._lock = threading.RLock()
|
||||
|
||||
@@ -771,3 +771,25 @@ def test_apply_prepared_resources_replaces_complete_docker_resource_package(
|
||||
assert not (resource_dir / "sites.cpython-old.so").exists()
|
||||
assert not manager._install_file.exists()
|
||||
assert not (manager._root / "prepared.json").exists()
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("current", "expected_state"),
|
||||
[("v3.0.10", "available"), ("v3.0.10-1", "idle")],
|
||||
)
|
||||
def test_check_accepts_hotfix_release_suffix(monkeypatch, tmp_path, current, expected_state):
|
||||
"""-N 后缀的临时修复版本视为稳定版,并按数字大于同号正式版。"""
|
||||
manager = _manager(monkeypatch, tmp_path)
|
||||
releases = [
|
||||
{"tag_name": "v3.0.11-beta", "prerelease": True, "draft": False},
|
||||
{"tag_name": "v3.0.10-1", "name": "v3.0.10-1", "prerelease": False, "draft": False},
|
||||
{"tag_name": "v3.0.10", "name": "v3.0.10", "prerelease": False, "draft": False},
|
||||
]
|
||||
monkeypatch.setattr(manager, "_request", lambda: SimpleNamespace(get_res=lambda _url: _response(releases)))
|
||||
monkeypatch.setattr(update_module, "get_app_version", lambda: current)
|
||||
|
||||
status = manager.check("application")
|
||||
|
||||
assert status.state == expected_state
|
||||
if expected_state == "available":
|
||||
assert status.version == "v3.0.10-1"
|
||||
|
||||
Reference in New Issue
Block a user