vet

Mirror of Vet, an AI code review tool
git clone git://git.laack.co/vet.git
Log | Files | Refs | README | LICENSE

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)}"