"""Tests for config validation (#690).""" import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent.parent)) from scripts.config_validate import validate_config, ValidationError def test_valid_config(): content = "model: gpt-4\nprovider: openai\n" valid, errors = validate_config(content) assert valid assert len(errors) == 0 def test_missing_required_key(): content = "provider: openai\n" valid, errors = validate_config(content) assert not valid assert any("model" in e.path for e in errors) def test_wrong_type(): content = "model: 123\n" valid, errors = validate_config(content) assert not valid assert any("model" in e.path for e in errors) def test_forbidden_key(): content = "model: gpt-4\npassword: secret123\n" valid, errors = validate_config(content) assert not valid assert any("password" in e.path for e in errors) def test_invalid_yaml(): content = "model: gpt-4\n bad indentation\n" valid, errors = validate_config(content) assert not valid def test_nested_validation(): content = "model: gpt-4\nagent:\n max_turns: not_a_number\n" valid, errors = validate_config(content) assert not valid assert any("max_turns" in e.path for e in errors) def test_toolsets_validation(): content = "model: gpt-4\ntoolsets:\n - web\n - 123\n" valid, errors = validate_config(content) assert not valid def test_empty_file(): content = "" valid, errors = validate_config(content) assert not valid if __name__ == "__main__": tests = [test_valid_config, test_missing_required_key, test_wrong_type, test_forbidden_key, test_invalid_yaml, test_nested_validation, test_toolsets_validation, test_empty_file] for t in tests: print(f"Running {t.__name__}...") t() print(" PASS") print("\nAll tests passed.")