Co-authored-by: Clément Drouin <clement.drouin@mistral.ai>
Co-authored-by: Laure Hugo <201583486+laure0303@users.noreply.github.com>
Co-authored-by: Paul VEZIA <166131032+le-codeur-rapide@users.noreply.github.com>
Co-authored-by: Peter Evers <peter.evers@mistral.ai>
Co-authored-by: Jules YZERD <newtonlormont@gmail.com>
Co-authored-by: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
Mathias Gesbert 2026-06-30 15:03:21 +02:00 committed by GitHub
parent d50704e694
commit 4e495f658d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
130 changed files with 1042 additions and 552 deletions

View file

@ -9,7 +9,7 @@ from unittest.mock import AsyncMock, MagicMock, patch
import pytest
from textual.app import WINDOWS
from tests.conftest import build_test_vibe_app
from tests.conftest import build_test_vibe_app, build_test_vibe_config
from vibe.cli.textual_ui.app import VibeApp, _run_app_with_cleanup
from vibe.cli.textual_ui.quit_manager import QUIT_CONFIRM_DELAY, QuitManager
@ -187,6 +187,19 @@ class TestActionDeleteRightOrQuit:
"Ctrl+D", "1 queued message will be discarded"
)
def test_quits_immediately_when_confirmation_disabled(self) -> None:
app = build_test_vibe_app(
config=build_test_vibe_config(ask_confirmation_on_exit=False)
)
with (
patch.object(app, "_get_chat_input", return_value=None),
patch.object(app, "_force_quit") as mock_quit,
patch.object(app._quit_manager, "request_confirmation") as mock_confirm,
):
app.action_delete_right_or_quit()
mock_quit.assert_called_once()
mock_confirm.assert_not_called()
@pytest.mark.asyncio
async def test_shutdown_cleanup_cancels_in_flight_tasks(app: VibeApp) -> None:

View file

@ -7,6 +7,7 @@ import pytest
from rich.text import Text
from textual.widgets import OptionList
from vibe.cli.textual_ui.shortcut_hints import SHORTCUT_STYLE
from vibe.cli.textual_ui.widgets.session_picker import (
SessionPickerApp,
_format_relative_time,
@ -170,7 +171,7 @@ class TestSessionPickerAppBindings:
def test_has_delete_binding(self) -> None:
assert "d" in self._get_binding_keys()
assert "D" in self._get_binding_keys()
assert "D" not in self._get_binding_keys()
class TestSessionPickerSessionRemoval:
@ -192,9 +193,9 @@ class TestSessionPickerSessionRemoval:
assert_delete_state(picker, kind="confirmation", option_id="session-a")
assert option_list.replaced_prompts[-1].option_id == "session-a"
assert (
"Press D again to delete" in option_list.replaced_prompts[-1].prompt.plain
)
prompt = option_list.replaced_prompts[-1].prompt
assert "Press d again to delete" in prompt.plain
assert any(span.style == SHORTCUT_STYLE for span in prompt.spans)
assert posted_messages == []
def test_second_delete_request_posts_delete_message(