mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-30 19:02:16 +00:00
69 lines
2.5 KiB
Python
69 lines
2.5 KiB
Python
"""Guards for the openjarvis-rust packaging split (#584 / #615).
|
|
|
|
``openjarvis_rust`` is the native PyO3 extension. It is NOT published to PyPI,
|
|
so it must not appear in the published ``desktop`` extra — listing it there
|
|
breaks ``pip install openjarvis[desktop]`` at install time. It lives in the uv
|
|
``desktop-native`` dependency group instead (excluded from wheel metadata),
|
|
which the desktop app installs from source via
|
|
``uv sync --group desktop-native``.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
import tomllib
|
|
|
|
ROOT = Path(__file__).resolve().parent.parent.parent
|
|
PYPROJECT = ROOT / "pyproject.toml"
|
|
DESKTOP_LIB_RS = ROOT / "frontend" / "src-tauri" / "src" / "lib.rs"
|
|
WINDOWS_INSTALL_PS1 = ROOT / "deploy" / "windows" / "install.ps1"
|
|
QUICKSTART_SH = ROOT / "scripts" / "quickstart.sh"
|
|
|
|
|
|
def _pyproject() -> dict:
|
|
return tomllib.loads(PYPROJECT.read_text())
|
|
|
|
|
|
def test_openjarvis_rust_not_in_published_desktop_extra() -> None:
|
|
desktop = _pyproject()["project"]["optional-dependencies"]["desktop"]
|
|
assert not any("openjarvis-rust" in dep for dep in desktop), (
|
|
"openjarvis-rust must not be in the published `desktop` extra — it is "
|
|
"not on PyPI, so it breaks `pip install openjarvis[desktop]`."
|
|
)
|
|
|
|
|
|
def test_openjarvis_rust_lives_in_uv_dependency_group() -> None:
|
|
group = _pyproject()["dependency-groups"]["desktop-native"]
|
|
assert any("openjarvis-rust" in dep for dep in group)
|
|
|
|
|
|
def test_openjarvis_rust_has_local_uv_path_source() -> None:
|
|
src = _pyproject()["tool"]["uv"]["sources"]["openjarvis-rust"]
|
|
assert src["path"] == "rust/crates/openjarvis-python"
|
|
|
|
|
|
def test_desktop_app_syncs_the_native_group() -> None:
|
|
# Otherwise the group's openjarvis_rust is never installed for the app.
|
|
assert '"desktop-native"' in DESKTOP_LIB_RS.read_text(), (
|
|
"the desktop app must `uv sync --group desktop-native` so the native "
|
|
"extension is built at launch."
|
|
)
|
|
|
|
|
|
def test_windows_installer_syncs_the_native_group() -> None:
|
|
# The Windows source installer does not run maturin separately.
|
|
assert (
|
|
"& $uvExe sync --extra desktop --group desktop-native"
|
|
in WINDOWS_INSTALL_PS1.read_text()
|
|
), (
|
|
"the Windows installer must include `--group desktop-native` so "
|
|
"openjarvis_rust is built during source install."
|
|
)
|
|
|
|
|
|
def test_quickstart_installs_web_search_dependencies() -> None:
|
|
quickstart = QUICKSTART_SH.read_text()
|
|
assert "--extra tools-search" in quickstart
|
|
assert "already running on port 8000" in quickstart
|