More web refactor. Tighten suspend terminal code.
This commit is contained in:
@@ -306,5 +306,25 @@ class InputEventManagerKeyWatcherTests(unittest.TestCase):
|
||||
[(modified, None), (unrelated, None)],
|
||||
)
|
||||
|
||||
def test_keybinding_grab_failure_rolls_back_partial_additions(self) -> None:
|
||||
manager = input_event_manager.InputEventManager()
|
||||
device = mock.Mock()
|
||||
device.add_key_grab.side_effect = [101, RuntimeError("grab failed")]
|
||||
manager._device = device
|
||||
firstDefinition = types.SimpleNamespace(keycode=44, modifiers=0)
|
||||
secondDefinition = types.SimpleNamespace(keycode=45, modifiers=0)
|
||||
binding = mock.Mock()
|
||||
binding.is_enabled.return_value = True
|
||||
binding.is_bound.return_value = True
|
||||
binding.has_grabs.return_value = False
|
||||
binding.keycode = 44
|
||||
binding.key_definitions.return_value = [firstDefinition, secondDefinition]
|
||||
|
||||
with self.assertRaisesRegex(RuntimeError, "grab failed"):
|
||||
manager.add_grabs_for_keybinding(binding)
|
||||
|
||||
device.remove_key_grab.assert_called_once_with(101)
|
||||
self.assertEqual(manager._grabbed_bindings, {})
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user