import importlib.util import os import tempfile from pathlib import Path ROOT = Path(__file__).resolve().parents[1] os.environ.setdefault("REPOSITORY_URL", "https://repo.example.test") spec = importlib.util.spec_from_file_location("dashboard_app", ROOT / "dashboard/app.py") app = importlib.util.module_from_spec(spec) spec.loader.exec_module(app) def test_package_filename_parsing(): assert app.parse_package(Path("rustbox_0.0.5-1_amd64.deb"), "deb") == ("rustbox", "0.0.5-1", "amd64") assert app.parse_package(Path("rustbox-0.0.5-1.x86_64.rpm"), "rpm") == ("rustbox", "0.0.5-1", "x86_64") def test_catalog_reads_linux_snapshot(): with tempfile.TemporaryDirectory() as tmp: root = Path(tmp) rel = root / "releases/one" (rel / "apt/pool/main/r/rustbox").mkdir(parents=True) (rel / "rpm/x86_64").mkdir(parents=True) (rel / "suse/x86_64").mkdir(parents=True) (rel / "LINUX-BUILD-INFO.txt").write_text("app_version=0.0.5\npackage_release=1\nbuilt_at=2026-10-30T12:00:00Z\nsource_commit=abc\npackaging_revision=1\n") (rel / "SUSE-BUILD-INFO.txt").write_text("app_version=0.0.5\npackage_release=1\nbuilt_at=2026-10-30T12:00:00Z\nsource_commit=abc\npackaging_revision=1\n") (rel / "apt/pool/main/r/rustbox/rustbox_0.0.5-1_amd64.deb").write_bytes(b"deb") (rel / "rpm/x86_64/rustbox-0.0.5-1.x86_64.rpm").write_bytes(b"rpm") (rel / "suse/x86_64/rustbox-0.0.5-1.x86_64.rpm").write_bytes(b"rpm") (root / "current").symlink_to("releases/one") catalog = app.generate_catalog(root) assert catalog["ready"] is True assert catalog["builds"]["linux"]["app_version"] == "0.0.5" assert len(catalog["packages"]) == 3