58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
from smoke.capabilities import (
|
|
CAPABILITY_CONTRACTS,
|
|
capability_names,
|
|
contracted_feature_ids,
|
|
)
|
|
from smoke.features import FEATURE_INVENTORY, feature_ids
|
|
|
|
EXPECTED_CAPABILITIES = {
|
|
"api_compatibility",
|
|
"auth",
|
|
"cli",
|
|
"config",
|
|
"extensibility",
|
|
"local_providers",
|
|
"messaging",
|
|
"openrouter",
|
|
"persistence",
|
|
"provider_routing",
|
|
"provider_runtime",
|
|
"request_behavior",
|
|
"streaming_conversion",
|
|
"voice",
|
|
}
|
|
|
|
|
|
def test_capability_map_covers_every_public_feature() -> None:
|
|
assert contracted_feature_ids() == feature_ids()
|
|
|
|
|
|
def test_capability_map_has_expected_top_level_groups() -> None:
|
|
assert capability_names() == EXPECTED_CAPABILITIES
|
|
|
|
|
|
def test_capability_contracts_are_decision_complete() -> None:
|
|
known_features = {feature.feature_id: feature for feature in FEATURE_INVENTORY}
|
|
|
|
for contract in CAPABILITY_CONTRACTS:
|
|
assert contract.feature_id in known_features, contract
|
|
assert contract.capability.strip(), contract
|
|
assert contract.subfeature.strip(), contract
|
|
assert contract.owner.strip(), contract
|
|
assert contract.inputs.strip(), contract
|
|
assert contract.outputs.strip(), contract
|
|
assert contract.failure.strip(), contract
|
|
|
|
assert contract.pytest_tests or contract.smoke_tests, contract
|
|
|
|
|
|
def test_capability_contract_owners_do_not_reference_removed_request_pipeline() -> None:
|
|
stale = [
|
|
contract
|
|
for contract in CAPABILITY_CONTRACTS
|
|
if "free_claude_code.api.request_pipeline" in contract.owner
|
|
or "ApiRequestPipeline" in contract.owner
|
|
]
|
|
|
|
assert stale == []
|