mirror of
https://github.com/NomaDamas/k-skill.git
synced 2026-06-24 02:04:11 +00:00
Add focused unit tests for JSON object validation, key=value decoding, and override merge behavior so the new wrapper has offline regression coverage. Constraint: PR #229 introduces a public MCP wrapper whose live endpoint should not be required for CI coverage. Rejected: Live MCP smoke as the only validation | upstream availability would make the regression path flaky. Confidence: high Scope-risk: narrow Directive: Keep wrapper argument parsing covered without requiring network or mcp package installation. Tested: python3 -m unittest scripts.test_myrealtrip_mcp; node --test scripts/skill-docs.test.js; ./scripts/validate-skills.sh Not-tested: Live MyRealTrip MCP endpoint call.
41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
import argparse
|
|
import importlib.util
|
|
import pathlib
|
|
import unittest
|
|
|
|
MODULE_PATH = pathlib.Path(__file__).resolve().parents[1] / "myrealtrip-search" / "scripts" / "myrealtrip_mcp.py"
|
|
spec = importlib.util.spec_from_file_location("myrealtrip_mcp", MODULE_PATH)
|
|
myrealtrip_mcp = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(myrealtrip_mcp)
|
|
|
|
|
|
class MyRealTripMcpWrapperTests(unittest.TestCase):
|
|
def test_parse_json_object_requires_object(self):
|
|
self.assertEqual(myrealtrip_mcp.parse_json_object('{"query":"제주"}', arg_name="--json"), {"query": "제주"})
|
|
with self.assertRaises(argparse.ArgumentTypeError):
|
|
myrealtrip_mcp.parse_json_object('["not", "object"]', arg_name="--json")
|
|
|
|
def test_parse_kv_pairs_json_decodes_values(self):
|
|
parsed = myrealtrip_mcp.parse_kv_pairs(["query=오사카", "perPage=5", "filters={\"theme\":\"ticket\"}"])
|
|
self.assertEqual(parsed["query"], "오사카")
|
|
self.assertEqual(parsed["perPage"], 5)
|
|
self.assertEqual(parsed["filters"], {"theme": "ticket"})
|
|
|
|
def test_parse_args_merges_json_and_kv_arguments(self):
|
|
args = myrealtrip_mcp.parse_args([
|
|
"call",
|
|
"searchTnas",
|
|
"--json",
|
|
'{"query":"오사카","perPage":3}',
|
|
"--arg",
|
|
"perPage=5",
|
|
])
|
|
tool_args = dict(args.json_args or {})
|
|
tool_args.update(myrealtrip_mcp.parse_kv_pairs(args.kv_args))
|
|
self.assertEqual(args.command, "call")
|
|
self.assertEqual(args.tool, "searchTnas")
|
|
self.assertEqual(tool_args, {"query": "오사카", "perPage": 5})
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|