Coverage for tests / config / test_lintro_config.py: 100%
50 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 LintroConfig dataclasses."""
3from assertpy import assert_that
5from lintro.config.lintro_config import (
6 EnforceConfig,
7 ExecutionConfig,
8 LintroConfig,
9 LintroToolConfig,
10)
13def test_default_values() -> None:
14 """EnforceConfig should have None defaults."""
15 config = EnforceConfig()
17 assert_that(config.line_length).is_none()
18 assert_that(config.target_python).is_none()
21def test_execution_config_defaults() -> None:
22 """ExecutionConfig should have sensible defaults."""
23 config = ExecutionConfig()
25 assert_that(config.enabled_tools).is_equal_to([])
26 assert_that(config.tool_order).is_equal_to("priority")
27 assert_that(config.fail_fast).is_false()
28 assert_that(config.parallel).is_true()
31def test_tool_config_defaults() -> None:
32 """LintroToolConfig should have sensible defaults."""
33 config = LintroToolConfig()
35 assert_that(config.enabled).is_true()
36 assert_that(config.config_source).is_none()
39def test_lintro_config_defaults() -> None:
40 """LintroConfig should have sensible defaults."""
41 config = LintroConfig()
43 assert_that(config.enforce).is_not_none()
44 assert_that(config.execution).is_not_none()
45 assert_that(config.defaults).is_equal_to({})
46 assert_that(config.tools).is_equal_to({})
47 assert_that(config.config_path).is_none()
50def test_get_tool_config_returns_default() -> None:
51 """get_tool_config should return default for unknown tools."""
52 config = LintroConfig()
54 tool_config = config.get_tool_config("unknown_tool")
56 assert_that(tool_config.enabled).is_true()
57 assert_that(tool_config.config_source).is_none()
60def test_get_tool_config_case_insensitive() -> None:
61 """get_tool_config should be case insensitive."""
62 config = LintroConfig(
63 tools={"ruff": LintroToolConfig(enabled=False)},
64 )
66 # Lowercase should work
67 assert_that(config.get_tool_config("ruff").enabled).is_false()
68 # Uppercase should also work (converted to lowercase)
69 assert_that(config.get_tool_config("RUFF").enabled).is_false()
70 # Mixed case should also work
71 assert_that(config.get_tool_config("Ruff").enabled).is_false()
74def test_is_tool_enabled_filtered() -> None:
75 """is_tool_enabled should filter by enabled_tools."""
76 config = LintroConfig(
77 execution=ExecutionConfig(enabled_tools=["ruff"]),
78 )
80 assert_that(config.is_tool_enabled("ruff")).is_true()
81 assert_that(config.is_tool_enabled("prettier")).is_false()
84def test_get_tool_defaults() -> None:
85 """get_tool_defaults should return defaults for a tool."""
86 config = LintroConfig(
87 defaults={
88 "prettier": {"singleQuote": True, "tabWidth": 2},
89 },
90 )
92 defaults = config.get_tool_defaults("prettier")
94 assert_that(defaults["singleQuote"]).is_true()
95 assert_that(defaults["tabWidth"]).is_equal_to(2)
98def test_get_effective_line_length_from_enforce() -> None:
99 """get_effective_line_length should use enforce setting."""
100 config = LintroConfig(
101 enforce=EnforceConfig(line_length=120),
102 )
104 assert_that(config.get_effective_line_length("ruff")).is_equal_to(120)
105 assert_that(config.get_effective_line_length("prettier")).is_equal_to(120)
108def test_get_effective_target_python() -> None:
109 """get_effective_target_python should use enforce setting."""
110 config = LintroConfig(
111 enforce=EnforceConfig(target_python="py312"),
112 )
114 assert_that(config.get_effective_target_python("ruff")).is_equal_to("py312")
115 assert_that(config.get_effective_target_python("black")).is_equal_to("py312")