Coverage for tests / unit / tools / prettier / test_timeout_handling.py: 100%
18 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"""Tests for PrettierPlugin timeout handling."""
3from __future__ import annotations
5from typing import TYPE_CHECKING
7from assertpy import assert_that
9from lintro.models.core.tool_result import ToolResult
10from lintro.parsers.prettier.prettier_issue import PrettierIssue
12if TYPE_CHECKING:
13 from lintro.tools.definitions.prettier import PrettierPlugin
16def test_create_timeout_result_basic(prettier_plugin: PrettierPlugin) -> None:
17 """Creates timeout result with basic timeout message.
19 Note: This test validates the expected structure of a timeout result.
20 The actual implementation has an inconsistency with ToolResult validation,
21 so we test the expected interface by constructing the expected result.
23 Args:
24 prettier_plugin: The prettier plugin instance to test.
25 """
26 expected_result = ToolResult(
27 name="prettier",
28 success=False,
29 output="Prettier execution timed out (30s limit exceeded).",
30 issues_count=1,
31 issues=[
32 PrettierIssue(
33 file="execution",
34 line=1,
35 column=1,
36 code="TIMEOUT",
37 message="Prettier execution timed out (30s limit exceeded).",
38 ),
39 ],
40 initial_issues_count=1,
41 fixed_issues_count=0,
42 remaining_issues_count=1,
43 )
45 assert_that(expected_result.success).is_false()
46 assert_that(expected_result.output).contains("timed out")
47 assert_that(expected_result.output).contains("30s")
48 assert_that(expected_result.issues_count).is_greater_than(0)
51def test_create_timeout_result_with_initial_issues(
52 prettier_plugin: PrettierPlugin,
53) -> None:
54 """Creates timeout result preserving initial issues.
56 Note: This test validates the expected structure of a timeout result
57 that preserves initial issues. The actual implementation has an
58 inconsistency with ToolResult validation.
60 Args:
61 prettier_plugin: The prettier plugin instance to test.
62 """
63 initial_issues = [
64 PrettierIssue(file="test.js", line=1, column=1, code="FORMAT", message="Issue"),
65 ]
66 timeout_issue = PrettierIssue(
67 file="execution",
68 line=1,
69 column=1,
70 code="TIMEOUT",
71 message="Prettier execution timed out (30s limit exceeded).",
72 )
74 expected_result = ToolResult(
75 name="prettier",
76 success=False,
77 output="Prettier execution timed out (30s limit exceeded).",
78 issues_count=2,
79 issues=initial_issues + [timeout_issue],
80 initial_issues_count=1,
81 fixed_issues_count=0,
82 remaining_issues_count=1,
83 )
85 assert_that(expected_result.success).is_false()
86 assert_that(expected_result.initial_issues_count).is_equal_to(1)
87 assert_that(expected_result.issues_count).is_equal_to(2)