Coverage for tests / unit / enums / test_tool_name.py: 100%
24 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 lintro.enums.tool_name module."""
3from __future__ import annotations
5import pytest
6from assertpy import assert_that
8from lintro.enums.tool_name import ToolName, normalize_tool_name
11@pytest.mark.parametrize(
12 ("member", "expected"),
13 [
14 (ToolName.RUFF, "ruff"),
15 (ToolName.BLACK, "black"),
16 (ToolName.MYPY, "mypy"),
17 (ToolName.PYTEST, "pytest"),
18 (ToolName.BANDIT, "bandit"),
19 (ToolName.ACTIONLINT, "actionlint"),
20 (ToolName.CLIPPY, "clippy"),
21 (ToolName.HADOLINT, "hadolint"),
22 (ToolName.MARKDOWNLINT, "markdownlint"),
23 (ToolName.YAMLLINT, "yamllint"),
24 ],
25)
26def test_tool_name_values(member: ToolName, expected: str) -> None:
27 """ToolName members have correct lowercase string values.
29 Args:
30 member: The ToolName enum member to test.
31 expected: The expected string value.
32 """
33 assert_that(member.value).is_equal_to(expected)
36def test_tool_name_is_str_enum() -> None:
37 """ToolName members are string instances."""
38 assert_that(ToolName.RUFF).is_instance_of(str)
41def test_tool_name_string_comparison() -> None:
42 """ToolName members compare equal to their string values."""
43 # StrEnum members compare equal to their string values
44 assert_that(str(ToolName.RUFF)).is_equal_to("ruff")
47def test_normalize_tool_name_from_string() -> None:
48 """normalize_tool_name converts string to ToolName."""
49 assert_that(normalize_tool_name("ruff")).is_equal_to(ToolName.RUFF)
52def test_normalize_tool_name_case_insensitive() -> None:
53 """normalize_tool_name is case-insensitive."""
54 assert_that(normalize_tool_name("RUFF")).is_equal_to(ToolName.RUFF)
55 assert_that(normalize_tool_name("Ruff")).is_equal_to(ToolName.RUFF)
58def test_normalize_tool_name_hyphenated() -> None:
59 """normalize_tool_name converts hyphenated names to underscored ToolName."""
60 assert_that(normalize_tool_name("astro-check")).is_equal_to(ToolName.ASTRO_CHECK)
61 assert_that(normalize_tool_name("cargo-audit")).is_equal_to(ToolName.CARGO_AUDIT)
64def test_normalize_tool_name_passthrough() -> None:
65 """normalize_tool_name returns ToolName unchanged."""
66 assert_that(normalize_tool_name(ToolName.RUFF)).is_equal_to(ToolName.RUFF)
69def test_normalize_tool_name_invalid_raises() -> None:
70 """normalize_tool_name raises ValueError for unknown tool."""
71 with pytest.raises(ValueError, match="Unknown tool name"):
72 normalize_tool_name("nonexistent")