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
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
1"""Tests for _temporary_option context manager."""
3from __future__ import annotations
5from unittest.mock import MagicMock
7import pytest
8from assertpy import assert_that
10from lintro.tools.implementations.ruff.fix import _temporary_option
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.
18 Args:
19 mock_ruff_tool: Mock RuffTool instance for testing.
20 """
21 mock_ruff_tool.options = {"existing_key": "original_value"}
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")
26 assert_that("new_key" in mock_ruff_tool.options).is_false()
29def test_temporary_option_restores_original_value(
30 mock_ruff_tool: MagicMock,
31) -> None:
32 """Verify original value is restored after context exits.
34 Args:
35 mock_ruff_tool: Mock RuffTool instance for testing.
36 """
37 mock_ruff_tool.options = {"key": "original"}
39 with _temporary_option(mock_ruff_tool, "key", "temporary"):
40 assert_that(mock_ruff_tool.options["key"]).is_equal_to("temporary")
42 assert_that(mock_ruff_tool.options["key"]).is_equal_to("original")
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.
50 Args:
51 mock_ruff_tool: Mock RuffTool instance for testing.
53 Raises:
54 ValueError: Test exception raised within the context.
55 """
56 mock_ruff_tool.options = {"key": "original"}
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")
63 assert_that(mock_ruff_tool.options["key"]).is_equal_to("original")
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.
71 Args:
72 mock_ruff_tool: Mock RuffTool instance for testing.
73 """
74 mock_ruff_tool.options = {}
76 with _temporary_option(mock_ruff_tool, "new_key", True):
77 assert_that(mock_ruff_tool.options["new_key"]).is_true()
79 assert_that("new_key" in mock_ruff_tool.options).is_false()