Co-authored-by: Albert Jiang <aj@mistral.ai> Co-authored-by: Clément Drouin <clement.drouin@mistral.ai> Co-authored-by: Laure Hugo <201583486+laure0303@users.noreply.github.com> Co-authored-by: Mathias Gesbert <mathias.gesbert@mistral.ai> Co-authored-by: Mert Unsal <mert.unsal@mistral.ai> Co-authored-by: Michel Thomazo <51709227+michelTho@users.noreply.github.com> Co-authored-by: Paul VEZIA <166131032+le-codeur-rapide@users.noreply.github.com> Co-authored-by: Pierre Rossinès <pierre.rossines@mistral.ai> Co-authored-by: Quentin <quentin.torroba@mistral.ai> Co-authored-by: Mistral Vibe <vibe@mistral.ai>
76 lines
2.1 KiB
Python
76 lines
2.1 KiB
Python
from __future__ import annotations
|
|
|
|
import os
|
|
from unittest.mock import patch
|
|
|
|
import pytest
|
|
|
|
from vibe.cli.terminal_detect import Terminal, detect_terminal
|
|
|
|
|
|
def _detect_with(env: dict[str, str]) -> Terminal:
|
|
with patch.dict(os.environ, env, clear=True):
|
|
return detect_terminal()
|
|
|
|
|
|
def test_detects_vscode() -> None:
|
|
assert _detect_with({"TERM_PROGRAM": "vscode"}) is Terminal.VSCODE
|
|
|
|
|
|
def test_detects_vscode_insiders() -> None:
|
|
assert (
|
|
_detect_with({"TERM_PROGRAM": "vscode", "TERM_PROGRAM_VERSION": "1.2-insider"})
|
|
is Terminal.VSCODE_INSIDERS
|
|
)
|
|
|
|
|
|
def test_detects_cursor_from_vscode_environment() -> None:
|
|
assert (
|
|
_detect_with({
|
|
"TERM_PROGRAM": "vscode",
|
|
"VSCODE_IPC_HOOK_CLI": "/Applications/Cursor.app/hook",
|
|
})
|
|
is Terminal.CURSOR
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("term_program", "terminal"),
|
|
[
|
|
("Apple_Terminal", Terminal.APPLE_TERMINAL),
|
|
("iterm.app", Terminal.ITERM2),
|
|
("wezterm", Terminal.WEZTERM),
|
|
("ghostty", Terminal.GHOSTTY),
|
|
("alacritty", Terminal.ALACRITTY),
|
|
("kitty", Terminal.KITTY),
|
|
("hyper", Terminal.HYPER),
|
|
],
|
|
)
|
|
def test_detects_term_program_mapping(term_program: str, terminal: Terminal) -> None:
|
|
assert _detect_with({"TERM_PROGRAM": term_program}) is terminal
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("env_var", "terminal"),
|
|
[
|
|
("WEZTERM_PANE", Terminal.WEZTERM),
|
|
("GHOSTTY_RESOURCES_DIR", Terminal.GHOSTTY),
|
|
("KITTY_WINDOW_ID", Terminal.KITTY),
|
|
("ALACRITTY_SOCKET", Terminal.ALACRITTY),
|
|
("ALACRITTY_LOG", Terminal.ALACRITTY),
|
|
("WT_SESSION", Terminal.WINDOWS_TERMINAL),
|
|
("WT_PROFILE_ID", Terminal.WINDOWS_TERMINAL),
|
|
],
|
|
)
|
|
def test_detects_environment_marker_fallback(env_var: str, terminal: Terminal) -> None:
|
|
assert _detect_with({env_var: "1"}) is terminal
|
|
|
|
|
|
def test_detects_jetbrains_environment_fallback() -> None:
|
|
assert (
|
|
_detect_with({"TERMINAL_EMULATOR": "JetBrains-JediTerm"}) is Terminal.JETBRAINS
|
|
)
|
|
|
|
|
|
def test_returns_unknown_without_markers() -> None:
|
|
assert _detect_with({}) is Terminal.UNKNOWN
|