Some checks failed
Desktop Dev Pre-release / prerelease (push) Failing after 2m18s
- added dedicated GUI updater executable and integrated launch path from main app - added stable/beta update channel selection with persisted settings and checker support - expanded CI/release validation to include updater and full test discovery
52 lines
2.3 KiB
Python
52 lines
2.3 KiB
Python
import unittest
|
|
import importlib.util
|
|
from pathlib import Path
|
|
|
|
MODULE_PATH = Path("services/update_service.py")
|
|
SPEC = importlib.util.spec_from_file_location("update_service_under_test", MODULE_PATH)
|
|
update_service = importlib.util.module_from_spec(SPEC)
|
|
SPEC.loader.exec_module(update_service)
|
|
|
|
|
|
class UpdateServiceTests(unittest.TestCase):
|
|
def test_normalize_update_channel(self):
|
|
self.assertEqual(update_service._normalize_update_channel("stable"), "stable")
|
|
self.assertEqual(update_service._normalize_update_channel("beta"), "beta")
|
|
self.assertEqual(update_service._normalize_update_channel("pre-release"), "beta")
|
|
self.assertEqual(update_service._normalize_update_channel("unknown"), "stable")
|
|
self.assertEqual(update_service._normalize_update_channel(""), "stable")
|
|
|
|
def test_select_release_from_list_skips_drafts(self):
|
|
releases = [
|
|
{"tag_name": "v2.0.0", "draft": True},
|
|
{"tag_name": "", "draft": False},
|
|
{"tag_name": "v1.9.0-beta.1", "draft": False},
|
|
]
|
|
selected = update_service._select_release_from_list(releases)
|
|
self.assertIsNotNone(selected)
|
|
self.assertEqual(selected["tag_name"], "v1.9.0-beta.1")
|
|
|
|
def test_extract_release_payload_uses_zip_and_checksum(self):
|
|
release_data = {
|
|
"tag_name": "v1.7.2",
|
|
"html_url": "https://example.com/release/v1.7.2",
|
|
"assets": [
|
|
{"name": "notes.txt", "browser_download_url": "https://example.com/notes.txt"},
|
|
{"name": "AnabasisManager-win64.zip", "browser_download_url": "https://example.com/app.zip"},
|
|
{"name": "AnabasisManager-win64.zip.sha256", "browser_download_url": "https://example.com/app.zip.sha256"},
|
|
],
|
|
}
|
|
payload = update_service._extract_release_payload(
|
|
release_data=release_data,
|
|
repository_url="https://git.daemonlord.ru/benya/AnabasisChatRemove",
|
|
current_version="1.7.1",
|
|
)
|
|
self.assertEqual(payload["latest_version"], "1.7.2")
|
|
self.assertEqual(payload["download_url"], "https://example.com/app.zip")
|
|
self.assertEqual(payload["checksum_url"], "https://example.com/app.zip.sha256")
|
|
self.assertTrue(payload["has_update"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|