| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- """Keyless boot tests for the production exe and development dsh carrier.
- Each carrier skips independently when absent. The dummy API key only satisfies
- adapter loading; initialize and shutdown do not call a model.
- """
- from __future__ import annotations
- import json
- from pathlib import Path
- import pytest
- from deepseek_harness import DeepSeekHarness, HarnessClient, HarnessConfig
- from deepseek_harness.errors import JsonRpcError, TransportClosedError
- from deepseek_harness_runtime import RUNTIME_MODE_ENV_VAR, resolve_bundled_launch_args
- _MODES = ("exe", "node")
- def _select_mode(mode: str, monkeypatch: pytest.MonkeyPatch) -> None:
- try:
- resolve_bundled_launch_args(mode)
- except FileNotFoundError as exc:
- pytest.skip(f"bundled {mode}-mode runtime unavailable on this machine: {exc}")
- monkeypatch.setenv(RUNTIME_MODE_ENV_VAR, mode)
- def _client(tmp_path: Path, mode: str, monkeypatch: pytest.MonkeyPatch, *patches: Path) -> HarnessClient:
- _select_mode(mode, monkeypatch)
- return HarnessClient(
- HarnessConfig(
- dsh_home=str(tmp_path / "home"),
- patches=tuple(str(patch) for patch in patches),
- cwd=str(tmp_path),
- env={
- # The lazily mounted adapter requires a key even without a model call.
- "DEEPSEEK_API_KEY": "sk-dummy-for-boot",
- "DEEPSEEK_BASE_URL": "http://127.0.0.1:9",
- "DSH_PERMISSION_MODE": "danger-full-access",
- "DSH_TELEMETRY_DISABLED": "1",
- },
- request_timeout_seconds=120,
- )
- )
- @pytest.mark.parametrize("mode", _MODES)
- def test_bundled_runtime_boots_the_sdk_profile(
- tmp_path: Path, mode: str, monkeypatch: pytest.MonkeyPatch
- ) -> None:
- with _client(tmp_path, mode, monkeypatch) as client:
- init = client.initialize(provider="deepseek-official", cwd=str(tmp_path), model="deepseek-v4-pro")
- assert init.serverInfo is not None
- assert init.serverInfo.name == "deepseek-harness-sdk-runtime"
- profile = json.loads((tmp_path / "home" / "profiles" / "sdk" / "package.json").read_text())
- assert profile["dsh"]["profile"]["bundles"] == [
- "@deepseek-ai/dsh-base",
- "@deepseek-ai/dsh-sdk-app",
- ]
- @pytest.mark.parametrize("mode", _MODES)
- def test_python_sdk_applies_an_ordered_profile_patch(
- tmp_path: Path, mode: str, monkeypatch: pytest.MonkeyPatch
- ) -> None:
- _select_mode(mode, monkeypatch)
- patch = tmp_path / "persona.patch.yml"
- patch.write_text(json.dumps([{
- "id": "system-prompt",
- "config": {"persona": "Python SDK ordered patch marker."},
- }]))
- harness = DeepSeekHarness(
- model="deepseek-v4-pro",
- cwd=str(tmp_path),
- dsh_home=str(tmp_path / "home"),
- patches=(str(patch),),
- env={"DSH_PERMISSION_MODE": "danger-full-access"},
- api_key="sk-dummy-for-boot",
- base_url="http://127.0.0.1:9",
- request_timeout_seconds=120,
- )
- with harness:
- pass
- @pytest.mark.parametrize("mode", _MODES)
- def test_bundled_runtime_surfaces_unbundled_plugin_failure(
- tmp_path: Path, mode: str, monkeypatch: pytest.MonkeyPatch
- ) -> None:
- patch = tmp_path / "missing.patch.yml"
- patch.write_text(json.dumps([{
- "insert": [{"id": "missing", "name": "@deepseek-ai/dsh-does-not-exist"}],
- }]))
- client = _client(tmp_path, mode, monkeypatch, patch)
- client.start()
- try:
- with pytest.raises((JsonRpcError, TransportClosedError, TimeoutError)) as excinfo:
- client.initialize(provider="deepseek-official", cwd=str(tmp_path), model="deepseek-v4-pro")
- finally:
- client.close()
- assert "@deepseek-ai/dsh-does-not-exist" in str(excinfo.value)
|