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

1"""Tests for lintro.enums.tool_name module.""" 

2 

3from __future__ import annotations 

4 

5import pytest 

6from assertpy import assert_that 

7 

8from lintro.enums.tool_name import ToolName, normalize_tool_name 

9 

10 

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. 

28 

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) 

34 

35 

36def test_tool_name_is_str_enum() -> None: 

37 """ToolName members are string instances.""" 

38 assert_that(ToolName.RUFF).is_instance_of(str) 

39 

40 

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") 

45 

46 

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) 

50 

51 

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) 

56 

57 

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) 

62 

63 

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) 

67 

68 

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")