CI / Format and clippy (push) Successful in 1m57s
CI / Dependency audit (push) Successful in 13s
CI / Check desktop app (Linux) (push) Successful in 3m54s
CI / Tests (Linux) (push) Failing after 7m25s
Release / Create release (push) Successful in 6s
Release / CLI (linux-aarch64) (push) Successful in 1m48s
Release / CLI (linux-x86_64) (push) Successful in 2m39s
Release / Desktop app (linux-aarch64) (push) Successful in 10m9s
Release / Desktop app (linux-x86_64) (push) Successful in 12m20s
Release / Desktop app (windows) (push) Successful in 7m32s
Release / Build latest.json (push) Successful in 5s
Completes the English-only standardization for code, comments, scripts and CI templates (UI/CLI-facing strings stay bilingual pt-BR/en, untouched). Covers the remaining crates/, apps/gui/ui/ and apps/gui/src-tauri/ comments, .gitea/ workflow and template comments, .githooks/ hooks, and the scripts/ source comments for the files already renamed in a prior commit (check.sh, generate-logo.py, install-hooks.sh). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VAyr8d7HuAdUGB6aA5xmDD
56 lines
2.1 KiB
Python
56 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
"""Unit tests for scripts/make-latest-json.py: python3 scripts/test_make_latest_json.py"""
|
|
import importlib.util
|
|
import os
|
|
import sys
|
|
import unittest
|
|
|
|
sys.dont_write_bytecode = True
|
|
|
|
spec = importlib.util.spec_from_file_location("m", os.path.join(os.path.dirname(__file__), "make-latest-json.py"))
|
|
m = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(m)
|
|
|
|
BASE = "https://git.lucasrguerra.dev.br/lucasrguerra/guara/releases/download/v1.3.2/"
|
|
|
|
|
|
def assets(version="1.3.2"):
|
|
names = [patterns[0].format(v=version) for _, patterns in m.PLATFORMS]
|
|
return {n: (BASE + n, f"sig-of-{n}\n") for n in names}
|
|
|
|
|
|
class LatestJson(unittest.TestCase):
|
|
def test_all_platforms_and_variants(self):
|
|
d = m.build("1.3.2", "### What's New\n", assets(), "2026-10-30T12:00:00Z")
|
|
self.assertEqual(d["version"], "1.3.2")
|
|
self.assertEqual(d["notes"], "### What's New")
|
|
p = d["platforms"]
|
|
for k in ("linux-x86_64", "linux-x86_64-appimage", "linux-aarch64", "windows-x86_64", "windows-x86_64-nsis"):
|
|
self.assertIn(k, p)
|
|
self.assertTrue(p["windows-x86_64"]["url"].endswith("x64-setup.exe"))
|
|
self.assertEqual(p["linux-x86_64"]["signature"], "sig-of-Guará_1.3.2_amd64.AppImage")
|
|
|
|
def test_missing_package_is_left_out(self):
|
|
a = assets()
|
|
del a["Guará_1.3.2_x64-setup.exe"]
|
|
d = m.build("1.3.2", "", a, "2026-10-30T12:00:00Z")
|
|
self.assertNotIn("windows-x86_64", d["platforms"])
|
|
self.assertIn("linux-x86_64", d["platforms"])
|
|
|
|
def test_other_versions_do_not_leak(self):
|
|
d = m.build("1.3.2", "", assets("1.2.0"), "2026-10-30T12:00:00Z")
|
|
self.assertEqual(d["platforms"], {})
|
|
|
|
def test_accepts_legacy_unaccented_name(self):
|
|
a = assets()
|
|
old = "Guara_1.3.2_amd64.AppImage"
|
|
_, sig = a.pop("Guará_1.3.2_amd64.AppImage")
|
|
a[old] = (BASE + old, sig)
|
|
d = m.build("1.3.2", "", a, "2026-10-30T12:00:00Z")
|
|
self.assertIn("linux-x86_64", d["platforms"])
|
|
self.assertTrue(d["platforms"]["linux-x86_64"]["url"].endswith(old))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|