mirror of
https://github.com/usestrix/strix.git
synced 2026-08-21 02:45:31 +02:00
89 lines
2.4 KiB
Python
89 lines
2.4 KiB
Python
"""Tests for the --mcp-config CLI flag."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import importlib
|
|
import os
|
|
import sys
|
|
from types import SimpleNamespace
|
|
from typing import TYPE_CHECKING, Any
|
|
|
|
import pytest
|
|
|
|
|
|
if TYPE_CHECKING:
|
|
from pathlib import Path
|
|
|
|
|
|
cli_main: Any = importlib.import_module("strix.interface.main")
|
|
|
|
|
|
def _stub_settings(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
monkeypatch.setattr(
|
|
cli_main,
|
|
"load_settings",
|
|
lambda: SimpleNamespace(runtime=SimpleNamespace(max_local_copy_mb=1024)),
|
|
)
|
|
|
|
|
|
def test_mcp_config_flag_sets_loader_override(
|
|
tmp_path: Path, monkeypatch: pytest.MonkeyPatch
|
|
) -> None:
|
|
config = tmp_path / "servers.json"
|
|
config.write_text("[]", encoding="utf-8")
|
|
_stub_settings(monkeypatch)
|
|
# delenv records "originally absent" so monkeypatch removes whatever the
|
|
# parser sets, keeping the override from leaking into other tests.
|
|
monkeypatch.delenv("STRIX_MCP_CONFIG", raising=False)
|
|
monkeypatch.setattr(
|
|
sys, "argv", ["strix", "-t", "https://test.com/", "-n", "--mcp-config", str(config)]
|
|
)
|
|
|
|
args = cli_main.parse_arguments()
|
|
|
|
assert args.mcp_config == str(config)
|
|
assert os.environ["STRIX_MCP_CONFIG"] == str(config)
|
|
|
|
|
|
def test_mcp_config_flag_rejects_missing_file(
|
|
tmp_path: Path, monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str]
|
|
) -> None:
|
|
_stub_settings(monkeypatch)
|
|
monkeypatch.delenv("STRIX_MCP_CONFIG", raising=False)
|
|
missing = tmp_path / "nope.json"
|
|
monkeypatch.setattr(
|
|
sys, "argv", ["strix", "-t", "https://test.com/", "-n", "--mcp-config", str(missing)]
|
|
)
|
|
|
|
with pytest.raises(SystemExit):
|
|
cli_main.parse_arguments()
|
|
|
|
assert "--mcp-config file not found" in capsys.readouterr().err
|
|
|
|
|
|
def test_mcp_server_flags_set_selection_env(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
_stub_settings(monkeypatch)
|
|
monkeypatch.delenv("STRIX_MCP_ONLY", raising=False)
|
|
monkeypatch.delenv("STRIX_MCP_EXCLUDE", raising=False)
|
|
monkeypatch.setattr(
|
|
sys,
|
|
"argv",
|
|
[
|
|
"strix",
|
|
"-t",
|
|
"https://test.com/",
|
|
"-n",
|
|
"--mcp-server",
|
|
"a",
|
|
"--mcp-server",
|
|
"b",
|
|
"--mcp-exclude",
|
|
"c",
|
|
],
|
|
)
|
|
|
|
cli_main.parse_arguments()
|
|
|
|
assert os.environ["STRIX_MCP_ONLY"] == "a,b"
|
|
assert os.environ["STRIX_MCP_EXCLUDE"] == "c"
|