Extensible canonical internal processing refactoring

This commit is contained in:
2026-05-04 11:06:11 +02:00
parent 4a16ccf1e1
commit d977f9e67c
20 changed files with 1815 additions and 16 deletions

View File

@@ -0,0 +1,37 @@
from markitect_tool.cli.extensions import collect_cli_command_specs, command_specs_from_extension
from markitect_tool.extension import ExtensionDescriptor, builtin_extension_registry
def test_command_specs_from_extension_handles_string_and_list_forms():
one = ExtensionDescriptor(id="one", kind="test", cli={"commands": "mkt one"})
many = ExtensionDescriptor(id="many", kind="test", cli={"commands": ["mkt a", "mkt b"]})
assert [spec.command for spec in command_specs_from_extension(one)] == ["mkt one"]
assert [spec.command for spec in command_specs_from_extension(many)] == ["mkt a", "mkt b"]
def test_collect_cli_command_specs_from_builtin_registry():
specs = collect_cli_command_specs(builtin_extension_registry())
commands = {(spec.extension_id, spec.command) for spec in specs}
assert ("selector", "mkt query") in commands
assert ("processor.uppercase", "mkt process") in commands
assert ("backend.local-sqlite", "mkt cache index") in commands
assert ("backend.local-sqlite", "mkt search") in commands
def test_cli_command_spec_serializes_without_empty_fields():
spec = command_specs_from_extension(
ExtensionDescriptor(
id="query.selector",
kind="query-engine",
summary="Selector engine",
cli={"commands": ["mkt query"], "group": "query"},
)
)[0]
data = spec.to_dict()
assert data["command"] == "mkt query"
assert data["extension_id"] == "query.selector"
assert data["metadata"]["group"] == "query"