Coverage for tests / unit / utils / conftest.py: 96%
51 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
1"""Pytest configuration for utility unit tests.
3Tests in this directory focus on utility functions including:
4- ASCII normalization
5- Enum and normalizer validation
6- Subprocess validator functionality
7- Timeout utilities
8"""
10from __future__ import annotations
12from dataclasses import dataclass, field
13from typing import TYPE_CHECKING, Any
15import pytest
17if TYPE_CHECKING:
18 from collections.abc import Callable
21@dataclass
22class FakeToolResult:
23 """Fake ToolResult for testing console/logger and summary output."""
25 name: str = "test-tool"
26 success: bool = True
27 issues_count: int = 0
28 output: str = ""
29 issues: list[Any] = field(default_factory=list)
30 fixed_issues_count: int | None = None
31 remaining_issues_count: int | None = None
32 pytest_summary: dict[str, Any] | None = None
33 ai_metadata: dict[str, Any] | None = None
36@dataclass
37class FakeIssue:
38 """Fake Issue for testing output formatters."""
40 file: str = "test.py"
41 line: int = 1
42 column: int = 1
43 code: str = "E001"
44 message: str = "Test error"
45 level: str = "error"
48@pytest.fixture
49def fake_tool_result() -> FakeToolResult:
50 """Provide a FakeToolResult instance for testing.
52 Returns:
53 FakeToolResult: Description of returned FakeToolResult.
54 """
55 return FakeToolResult()
58@pytest.fixture
59def fake_tool_result_factory() -> Callable[..., FakeToolResult]:
60 """Factory fixture to create FakeToolResult with custom attributes.
62 Returns:
63 Callable[..., FakeToolResult]: Description of returned Callable[..., FakeToolResult].
64 """
66 def _create(**kwargs: Any) -> FakeToolResult:
67 return FakeToolResult(**kwargs)
69 return _create
72@pytest.fixture
73def fake_issue() -> FakeIssue:
74 """Provide a FakeIssue instance for testing.
76 Returns:
77 FakeIssue: Description of returned FakeIssue.
78 """
79 return FakeIssue()
82@pytest.fixture
83def fake_issue_factory() -> Callable[..., FakeIssue]:
84 """Factory fixture to create FakeIssue with custom attributes.
86 Returns:
87 Callable[..., FakeIssue]: Description of returned Callable[..., FakeIssue].
88 """
90 def _create(**kwargs: Any) -> FakeIssue:
91 return FakeIssue(**kwargs)
93 return _create
96@pytest.fixture
97def console_capture() -> tuple[Callable[[str], None], list[str]]:
98 """Capture console output for testing.
100 Returns:
101 Tuple containing:
102 - capture function that appends text to output list
103 - output list containing captured text
104 """
105 output: list[str] = []
107 def capture(text: str = "", **_kwargs: Any) -> None:
108 output.append(text)
110 return capture, output
113@pytest.fixture
114def console_capture_with_kwargs() -> (
115 tuple[Callable[..., None], list[tuple[str, dict[str, Any]]]]
116):
117 """Capture console output with kwargs for testing.
119 Returns:
120 Tuple containing:
121 - capture function that appends (text, kwargs) tuples
122 - output list containing captured (text, kwargs) tuples
123 """
124 output: list[tuple[str, dict[str, Any]]] = []
126 def capture(text: str = "", **kwargs: Any) -> None:
127 output.append((text, kwargs))
129 return capture, output