tests: cover m2pack cli and mcp additions
Add discovery-helper tests (env var override, PATH fallback, missing binary) and command tests that point M2PACK_BINARY at a Python stub script echoing canned JSON per subcommand. Cover success paths, non-zero exit, non-JSON output, JSON-array output, and missing binary. Extend the MCP schema mirror test to cover all 12 tools and add dispatch tests for the new m2pack_* argv translation.
This commit is contained in:
@@ -10,6 +10,10 @@ from metin_release.commands import (
|
||||
build_manifest,
|
||||
diff_remote,
|
||||
inspect,
|
||||
m2pack_build,
|
||||
m2pack_diff,
|
||||
m2pack_export_runtime_key,
|
||||
m2pack_verify,
|
||||
promote,
|
||||
publish,
|
||||
sign,
|
||||
@@ -35,17 +39,21 @@ EXPECTED_TOOL_NAMES = {
|
||||
"release_promote",
|
||||
"release_verify_public",
|
||||
"release_publish",
|
||||
"m2pack_build",
|
||||
"m2pack_verify",
|
||||
"m2pack_diff",
|
||||
"m2pack_export_runtime_key",
|
||||
}
|
||||
|
||||
|
||||
def test_tool_catalogue_is_exactly_the_phase_one_set():
|
||||
def test_tool_catalogue_is_exactly_the_phase_one_plus_four_set():
|
||||
assert {t.name for t in TOOL_SPECS} == EXPECTED_TOOL_NAMES
|
||||
assert len(TOOL_SPECS) == 8
|
||||
assert len(TOOL_SPECS) == 12
|
||||
|
||||
|
||||
def test_every_tool_has_release_subcommand_and_description():
|
||||
def test_every_tool_has_known_group_and_description():
|
||||
for spec in TOOL_SPECS:
|
||||
assert spec.subcommand[0] == "release"
|
||||
assert spec.subcommand[0] in {"release", "m2pack"}
|
||||
assert spec.description.strip()
|
||||
schema = json_schema(spec)
|
||||
assert schema["type"] == "object"
|
||||
@@ -82,6 +90,10 @@ _COMMAND_MODULES = {
|
||||
"release_promote": promote,
|
||||
"release_verify_public": verify_public,
|
||||
"release_publish": publish,
|
||||
"m2pack_build": m2pack_build,
|
||||
"m2pack_verify": m2pack_verify,
|
||||
"m2pack_diff": m2pack_diff,
|
||||
"m2pack_export_runtime_key": m2pack_export_runtime_key,
|
||||
}
|
||||
|
||||
|
||||
@@ -121,7 +133,7 @@ def test_unknown_tool_rejected_by_dispatch():
|
||||
def test_unknown_tool_name_not_in_catalogue():
|
||||
assert "release_rollback" not in TOOLS_BY_NAME
|
||||
assert "erp_reserve" not in TOOLS_BY_NAME
|
||||
assert "m2pack_build" not in TOOLS_BY_NAME
|
||||
assert "launcher_publish" not in TOOLS_BY_NAME
|
||||
|
||||
|
||||
def test_build_cli_args_rejects_missing_required():
|
||||
|
||||
Reference in New Issue
Block a user