fix(update): accept cmhub release metadata contract

This commit is contained in:
chengma
2026-07-13 17:17:25 +08:00
parent 74b98cd123
commit 0d7a4c1b56
8 changed files with 99 additions and 15 deletions
+28
View File
@@ -92,6 +92,34 @@ class UpdateCheckTests(unittest.TestCase):
self.assertEqual("abc", result.sha256)
self.assertEqual("新版说明", result.message)
def test_check_for_update_accepts_cmhub_release_contract(self):
def fetcher(_url, _timeout):
return {
"platform": "windows",
"release": {
"version": "0.1.6",
"download_url": "http://185.216.248.75:24521/down/release.zip",
"sha256": "a" * 64,
"release_notes": "启动时联网获取更新信息",
"force_update": True,
"size_bytes": 53318076,
"published_at": "2026-07-13T17:10:59.660653+08:00",
},
}
result = update_check.check_for_update(
current_version="0.1.5",
url="https://cm.example.test/api/v1/client/releases/latest?platform=windows",
fetcher=fetcher,
)
self.assertTrue(result.forced)
self.assertFalse(result.can_enter)
self.assertEqual("0.1.6", result.latest_version)
self.assertEqual(53318076, result.size_bytes)
self.assertEqual("", result.package_format)
self.assertEqual(0, result.updater_protocol)
def test_network_failure_allows_entry(self):
def fetcher(_url, _timeout):
raise socket.timeout("timeout")