Coverage for tests / unit / tools / ruff / fix / test_temporary_option.py: 100%

27 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-04-03 18:53 +0000

1"""Tests for _temporary_option context manager.""" 

2 

3from __future__ import annotations 

4 

5from unittest.mock import MagicMock 

6 

7import pytest 

8from assertpy import assert_that 

9 

10from lintro.tools.implementations.ruff.fix import _temporary_option 

11 

12 

13def test_temporary_option_sets_and_restores_value( 

14 mock_ruff_tool: MagicMock, 

15) -> None: 

16 """Verify temporary option is set within context and restored after. 

17 

18 Args: 

19 mock_ruff_tool: Mock RuffTool instance for testing. 

20 """ 

21 mock_ruff_tool.options = {"existing_key": "original_value"} 

22 

23 with _temporary_option(mock_ruff_tool, "new_key", "temp_value"): 

24 assert_that(mock_ruff_tool.options["new_key"]).is_equal_to("temp_value") 

25 

26 assert_that("new_key" in mock_ruff_tool.options).is_false() 

27 

28 

29def test_temporary_option_restores_original_value( 

30 mock_ruff_tool: MagicMock, 

31) -> None: 

32 """Verify original value is restored after context exits. 

33 

34 Args: 

35 mock_ruff_tool: Mock RuffTool instance for testing. 

36 """ 

37 mock_ruff_tool.options = {"key": "original"} 

38 

39 with _temporary_option(mock_ruff_tool, "key", "temporary"): 

40 assert_that(mock_ruff_tool.options["key"]).is_equal_to("temporary") 

41 

42 assert_that(mock_ruff_tool.options["key"]).is_equal_to("original") 

43 

44 

45def test_temporary_option_restores_on_exception( 

46 mock_ruff_tool: MagicMock, 

47) -> None: 

48 """Verify option is restored even when exception occurs in context. 

49 

50 Args: 

51 mock_ruff_tool: Mock RuffTool instance for testing. 

52 

53 Raises: 

54 ValueError: Test exception raised within the context. 

55 """ 

56 mock_ruff_tool.options = {"key": "original"} 

57 

58 with pytest.raises(ValueError): 

59 with _temporary_option(mock_ruff_tool, "key", "temporary"): 

60 assert_that(mock_ruff_tool.options["key"]).is_equal_to("temporary") 

61 raise ValueError("Test exception") 

62 

63 assert_that(mock_ruff_tool.options["key"]).is_equal_to("original") 

64 

65 

66def test_temporary_option_removes_new_key_on_exit( 

67 mock_ruff_tool: MagicMock, 

68) -> None: 

69 """Verify new key is removed if it didn't exist before. 

70 

71 Args: 

72 mock_ruff_tool: Mock RuffTool instance for testing. 

73 """ 

74 mock_ruff_tool.options = {} 

75 

76 with _temporary_option(mock_ruff_tool, "new_key", True): 

77 assert_that(mock_ruff_tool.options["new_key"]).is_true() 

78 

79 assert_that("new_key" in mock_ruff_tool.options).is_false()