|
|
@@ -9,21 +9,12 @@ import pytest
|
|
|
|
|
|
from deepseek_harness_runtime import (
|
|
|
RUNTIME_MODE_ENV_VAR,
|
|
|
- bundled_default_config_path,
|
|
|
bundled_package_dir,
|
|
|
+ main,
|
|
|
resolve_bundled_launch_args,
|
|
|
)
|
|
|
|
|
|
|
|
|
-def test_default_config_is_shipped_with_the_package() -> None:
|
|
|
- path = bundled_default_config_path()
|
|
|
- assert path == bundled_package_dir() / "runtime" / "cordis.yml"
|
|
|
- config = path.read_text()
|
|
|
- assert "@deepseek-ai/dsh-agent-spine-demo" in config
|
|
|
- assert "@deepseek-ai/dsh-session-persistence-jsonl" in config
|
|
|
- assert "@deepseek-ai/dsh-session-checkpoint-policy" in config
|
|
|
-
|
|
|
-
|
|
|
def test_unknown_explicit_mode_fails_loud() -> None:
|
|
|
with pytest.raises(ValueError, match="expected 'exe' or 'node'"):
|
|
|
resolve_bundled_launch_args("bogus")
|
|
|
@@ -49,10 +40,10 @@ def test_runtime_requires_spawn_helper_only_on_macos(
|
|
|
) -> None:
|
|
|
runtime_dir = tmp_path / "runtime"
|
|
|
runtime_dir.mkdir()
|
|
|
- linux = runtime_dir / "dsh-jsonrpc-agent-pkg-linux-x64"
|
|
|
+ linux = runtime_dir / "deepseek-harness-sdk-runtime-linux-x64"
|
|
|
linux.touch()
|
|
|
Path(f"{linux}-rg").touch()
|
|
|
- macos = runtime_dir / "dsh-jsonrpc-agent-pkg-macos-arm64"
|
|
|
+ macos = runtime_dir / "deepseek-harness-sdk-runtime-macos-arm64"
|
|
|
macos.touch()
|
|
|
Path(f"{macos}-rg").touch()
|
|
|
monkeypatch.setattr(runtime, "bundled_package_dir", lambda: tmp_path)
|
|
|
@@ -69,9 +60,55 @@ def test_runtime_requires_ripgrep_sidecar(
|
|
|
) -> None:
|
|
|
runtime_dir = tmp_path / "runtime"
|
|
|
runtime_dir.mkdir()
|
|
|
- (runtime_dir / "dsh-jsonrpc-agent-pkg-linux-x64").touch()
|
|
|
+ (runtime_dir / "deepseek-harness-sdk-runtime-linux-x64").touch()
|
|
|
monkeypatch.setattr(runtime, "bundled_package_dir", lambda: tmp_path)
|
|
|
monkeypatch.setattr(runtime, "_current_platform_tag", lambda: "linux-x64")
|
|
|
|
|
|
with pytest.raises(FileNotFoundError, match="ripgrep sidecar"):
|
|
|
runtime.bundled_runtime_path()
|
|
|
+
|
|
|
+
|
|
|
+def test_node_mode_runs_the_deployed_dsh_cli(
|
|
|
+ tmp_path: Path, monkeypatch: pytest.MonkeyPatch
|
|
|
+) -> None:
|
|
|
+ bin_js = tmp_path / "runtime" / "node" / "node_modules" / "@deepseek-ai" / "dsh" / "lib" / "bin.js"
|
|
|
+ bin_js.parent.mkdir(parents=True)
|
|
|
+ bin_js.touch()
|
|
|
+ monkeypatch.setattr(runtime, "bundled_package_dir", lambda: tmp_path)
|
|
|
+ monkeypatch.setattr(runtime.shutil, "which", lambda _name: "/node")
|
|
|
+
|
|
|
+ assert resolve_bundled_launch_args("node") == ("/node", str(bin_js))
|
|
|
+
|
|
|
+
|
|
|
+def test_python_dsh_command_requires_explicit_home(
|
|
|
+ monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str]
|
|
|
+) -> None:
|
|
|
+ monkeypatch.delenv("DSH_HOME", raising=False)
|
|
|
+
|
|
|
+ with pytest.raises(SystemExit) as excinfo:
|
|
|
+ main()
|
|
|
+
|
|
|
+ assert excinfo.value.code == 2
|
|
|
+ assert "explicit DSH_HOME" in capsys.readouterr().err
|
|
|
+
|
|
|
+
|
|
|
+def test_python_dsh_command_executes_the_bundled_cli(
|
|
|
+ monkeypatch: pytest.MonkeyPatch
|
|
|
+) -> None:
|
|
|
+ called: dict[str, object] = {}
|
|
|
+ monkeypatch.setenv("DSH_HOME", "/explicit/home")
|
|
|
+ monkeypatch.setattr(runtime, "resolve_bundled_launch_args", lambda: ("/runtime",))
|
|
|
+ monkeypatch.setattr(runtime.sys, "argv", ["dsh", "plugin", "--profile", "sdk", "list"])
|
|
|
+
|
|
|
+ def execvpe(file: str, args: tuple[str, ...], env: dict[str, str]) -> None:
|
|
|
+ called.update(file=file, args=args, home=env.get("DSH_HOME"))
|
|
|
+
|
|
|
+ monkeypatch.setattr(runtime.os, "execvpe", execvpe)
|
|
|
+
|
|
|
+ main()
|
|
|
+
|
|
|
+ assert called == {
|
|
|
+ "file": "/runtime",
|
|
|
+ "args": ("/runtime", "plugin", "--profile", "sdk", "list"),
|
|
|
+ "home": "/explicit/home",
|
|
|
+ }
|