Files
voculinux/tests/test_sync_flatpak_deps.py
T
xavierk 80a3792576
CI / security (pull_request) Failing after 1m25s
CI / lint (pull_request) Failing after 34s
CI / ai-review (pull_request) Successful in 25s
chore: import vocalinux project
Import the vocalinux source tree (tray app, Next.js site in web/,
packaging, installers, docs and tests) on top of the Gitea template
commit. The project README replaces the template README, and the
template CI files (.gitea/workflows/ci.yml, .jscpd.json, CI.md) are kept.
2026-11-06 11:51:44 +05:30

80 lines
2.9 KiB
Python

"""Unit tests for the Flatpak dependency artifact selector."""
import importlib.util
from pathlib import Path
from typing import Any
import pytest
SCRIPT = Path(__file__).resolve().parents[1] / "scripts" / "sync_flatpak_deps.py"
SPEC = importlib.util.spec_from_file_location("sync_flatpak_deps", SCRIPT)
assert SPEC is not None and SPEC.loader is not None
SYNC: Any = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(SYNC)
def _wheel(filename: str, digest: str) -> dict[str, object]:
"""Return a small PyPI wheel record for artifact selection tests."""
return {
"packagetype": "bdist_wheel",
"filename": filename,
"digests": {"sha256": digest},
"url": f"https://example.invalid/{filename}",
}
def _install_artifacts(monkeypatch: pytest.MonkeyPatch, artifacts: list[dict[str, object]]) -> None:
"""Replace the PyPI lookup with deterministic artifact records."""
def fake_pypi_artifacts(name: str, version: str) -> list[dict[str, object]]:
return artifacts
monkeypatch.setattr(SYNC, "pypi_artifacts", fake_pypi_artifacts)
def test_binary_only_selection_uses_matching_cpython_architecture_wheel(
monkeypatch: pytest.MonkeyPatch,
) -> None:
"""Select the locked cp313 x86_64 wheel, not other ABI or arch variants."""
artifacts = [
_wheel("onnxruntime-1.29.0-cp313-cp313t-manylinux_2_28_x86_64.whl", "a" * 64),
_wheel("onnxruntime-1.29.0-cp312-cp312-manylinux_2_28_x86_64.whl", "b" * 64),
_wheel("onnxruntime-1.29.0-cp313-cp313-manylinux_2_28_aarch64.whl", "c" * 64),
_wheel("onnxruntime-1.29.0-cp313-cp313-manylinux_2_28_x86_64.whl", "d" * 64),
]
_install_artifacts(monkeypatch, artifacts)
selected = SYNC.choose_artifact(
"onnxruntime",
"1.29.0",
{"a" * 64, "b" * 64, "c" * 64, "d" * 64},
arch="x86_64",
)
assert selected == (artifacts[-1]["url"], "d" * 64)
def test_binary_only_selection_fails_when_matching_wheel_digest_is_not_locked(
monkeypatch: pytest.MonkeyPatch,
) -> None:
"""Do not select a compatible wheel unless uv recorded its digest."""
wheel = _wheel("onnxruntime-1.29.0-cp313-cp313-manylinux_2_28_x86_64.whl", "e" * 64)
_install_artifacts(monkeypatch, [wheel])
with pytest.raises(SystemExit, match="not among the hashes uv locked"):
SYNC.choose_artifact("onnxruntime", "1.29.0", {"f" * 64}, arch="x86_64")
def test_non_binary_selection_prefers_universal_wheel(
monkeypatch: pytest.MonkeyPatch,
) -> None:
"""Non-binary dependencies retain the universal-wheel preference."""
source = _wheel("sample-1.0.tar.gz", "1" * 64)
source["packagetype"] = "sdist"
universal = _wheel("sample-1.0-py3-none-any.whl", "2" * 64)
_install_artifacts(monkeypatch, [source, universal])
selected = SYNC.choose_artifact("sample", "1.0", {"1" * 64, "2" * 64})
assert selected == (universal["url"], "2" * 64)