cli_config_consistency_test.py (1369B)
1 from __future__ import annotations 2 3 from vet.cli.config.cli_config_schema import CliConfigPreset 4 from vet.cli.config.cli_config_schema import CliDefaults 5 from vet.cli.main import create_parser 6 7 IGNORED_ARGS = { 8 "help", 9 "version", 10 # CLI-only flags that select behavior rather than configure defaults 11 "config", 12 "list_configs", 13 "list_models", 14 "list_issue_codes", 15 "list_fields", 16 # agent-mode flags are intentionally CLI-only 17 "agentic", 18 "agent_harness", 19 "update_models", 20 } 21 22 23 def _extract_cli_arg_dests() -> set[str]: 24 parser = create_parser() 25 return {action.dest for action in parser._actions if action.dest and action.dest not in IGNORED_ARGS} 26 27 28 def test_cli_args_present_in_cli_defaults_and_presets() -> None: 29 """Ensure every CLI argument that is meant to be configurable 30 appears in both `CliDefaults` and `CliConfigPreset`. 31 """ 32 cli_args = _extract_cli_arg_dests() 33 34 defaults_fields = set(CliDefaults.model_fields.keys()) 35 preset_fields = set(CliConfigPreset.model_fields.keys()) 36 37 missing_in_defaults = cli_args - defaults_fields 38 missing_in_presets = cli_args - preset_fields 39 40 assert not missing_in_defaults, f"CLI args missing from CliDefaults: {sorted(missing_in_defaults)}" 41 assert not missing_in_presets, f"CLI args missing from CliConfigPreset: {sorted(missing_in_presets)}"