{
"event": "PreToolUse",
"tool_name": "Bash",
"tool_input": {
"command": ".\/venv\/bin\/python -c \"\nimport yaml\nfrom validators import ContractValidator, ScopeResolver, RuleEvaluator\n\nyaml_content = '''\ncontract:\n name: betriebsdokumentation\n version: \\\"2.0\\\"\n status: active\n scope:\n paths:\n - \\\"\/src\/View\/docs\/**\/*.php\\\"\n excludes:\n - \\\"**\/layout.php\\\"\n - \\\"**\/partials\/**\\\"\n rules:\n - id: required-h1\n check_type: required_pattern\n patterns:\n - \\\"<h1>\\\"\n in_files: \\\"docs\/**\/*.php\\\"\n severity: major\n description: \\\"Dokumentationsseiten müssen h1 Titel haben\\\"\n - id: terminology-dienst\n check_type: forbidden_pattern\n patterns:\n - \\\">Service<\\\"\n - \\\">Command<\\\"\n in_files: \\\"docs\/**\/*.php\\\"\n severity: minor\n description: \\\"Bevorzuge Dienst statt Service\\\"\n'''\n\ncontract_data = yaml.safe_load(yaml_content)\nprint('Contract loaded:', contract_data['contract']['name'])\n\n# Test ScopeResolver\nresolver = ScopeResolver()\nscope = contract_data['contract']['scope']\npaths = resolver.resolve_paths(scope)\nprint(f'ScopeResolver found {len(paths)} paths')\n\n# Test RuleEvaluator\nevaluator = RuleEvaluator()\nprint(f'RuleEvaluator instantiated')\n\n# Test full ContractValidator\nvalidator = ContractValidator(contract_data, resolver, evaluator)\nresult = validator.validate()\n\nprint(f'\\\\n=== Validation Result ===')\nprint(f'Contract: {result.contract}')\nprint(f'Outcome: {result.outcome}')\nprint(f'Critical: {result.critical}, Major: {result.major}, Minor: {result.minor}')\nprint(f'Findings: {len(result.findings)}')\n\n# Show first few findings\nfor f in result.findings[:5]:\n print(f' - {f.get(\\\"type\\\", \\\"?\\\")}: {f.get(\\\"message\\\", \\\"no message\\\")[:60]}')\n\"\n",
"description": "Test refactored ContractValidator with real contract"
}
}