summaryrefslogtreecommitdiff
path: root/tests/test_server.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_server.py')
-rw-r--r--tests/test_server.py83
1 files changed, 82 insertions, 1 deletions
diff --git a/tests/test_server.py b/tests/test_server.py
index 3a80e80..232d411 100644
--- a/tests/test_server.py
+++ b/tests/test_server.py
@@ -65,17 +65,26 @@ class McpServerTests(unittest.TestCase):
response = server.handle(
{"jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {}}
)
- names = {tool["name"] for tool in response["result"]["tools"]}
+ tools = response["result"]["tools"]
+ names = {tool["name"] for tool in tools}
self.assertIn("sailfish_device_topmost_pid", names)
self.assertIn("sailfish_device_touch", names)
self.assertIn("sailfish_device_touch_workflow", names)
self.assertIn("sailfish_device_user_session_command", names)
self.assertIn("sailfish_device_browser_launch", names)
self.assertIn("sailfish_sdk_refresh_metadata", names)
+ self.assertIn("sailfish_build_preflight", names)
+ self.assertIn("sailfish_build_cancel", names)
self.assertIn("sailfish_android_build_hosts", names)
self.assertIn("sailfish_android_build", names)
self.assertIn("sailfish_android_build_status", names)
+ self.assertIn("sailfish_android_build_cancel", names)
self.assertIn("sailfish_qml_check_translator_ternaries", names)
+ obs_results = next(tool for tool in tools if tool["name"] == "sailfish_obs_results")
+ self.assertEqual(
+ obs_results["inputSchema"]["properties"]["server"]["enum"],
+ ["internal", "partner", "community"],
+ )
def test_qml_ternary_checker_reports_inline_ternary_qstrid(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
@@ -608,6 +617,78 @@ class McpServerTests(unittest.TestCase):
"/build/home%3Aexample/5.0.0/aarch64/browser/_log?nostream=1",
)
+ def test_obs_results_selects_named_servers(self) -> None:
+ aliases = {
+ "internal": "jolla",
+ "partner": "partner",
+ "community": "community",
+ }
+ with tempfile.TemporaryDirectory() as tmp:
+ mcp_server = self.make_server(Path(tmp))
+ for named_server, api_alias in aliases.items():
+ with self.subTest(server=named_server):
+ with patch("sailfish_devel_mcp.tools.run") as mocked_run:
+ mocked_run.return_value = CommandResult(("osc",), 0, "", "")
+ response = mcp_server.handle(
+ {
+ "jsonrpc": "2.0",
+ "id": 13,
+ "method": "tools/call",
+ "params": {
+ "name": "sailfish_obs_results",
+ "arguments": {
+ "project": "home:example",
+ "package": "browser",
+ "server": named_server,
+ },
+ },
+ }
+ )
+
+ self.assertFalse(response["result"].get("isError", False))
+ argv = list(mocked_run.call_args.args[0])
+ self.assertEqual(
+ argv,
+ [
+ "osc",
+ "-A",
+ api_alias,
+ "results",
+ "home:example",
+ "browser",
+ ],
+ )
+ structured = response["result"]["structuredContent"]
+ self.assertEqual(structured["server"], named_server)
+ self.assertEqual(structured["api_alias"], api_alias)
+
+ def test_obs_results_rejects_server_with_api_alias(self) -> None:
+ with tempfile.TemporaryDirectory() as tmp:
+ server = self.make_server(Path(tmp))
+ with patch("sailfish_devel_mcp.tools.run") as mocked_run:
+ response = server.handle(
+ {
+ "jsonrpc": "2.0",
+ "id": 14,
+ "method": "tools/call",
+ "params": {
+ "name": "sailfish_obs_results",
+ "arguments": {
+ "project": "home:example",
+ "server": "partner",
+ "api_alias": "community",
+ },
+ },
+ }
+ )
+
+ self.assertTrue(response["result"].get("isError", False))
+ self.assertIn(
+ "server and api_alias cannot be combined",
+ response["result"]["content"][0]["text"],
+ )
+ mocked_run.assert_not_called()
+
def test_sdk_refresh_metadata_uses_local_sdk_main_target(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)