generated from coulomb/repo-seed
41 lines
1.7 KiB
Python
41 lines
1.7 KiB
Python
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
|
|
assert ("document.function", "mkt function render") in commands
|
|
assert ("memory.graph-contract", "mkt memory graph pack") in commands
|
|
assert ("memory.context-package", "mkt context pack") 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"
|