2.0.0
Co-Authored-By: Quentin Torroba <quentin.torroba@mistral.ai> Co-Authored-By: Michel Thomazo <michel.thomazo@mistral.ai> Co-Authored-By: Clément Drouin <clement.drouin@mistral.ai> Co-Authored-By: Vincent Guilloux <vincent.guilloux@mistral.ai> Co-Authored-By: Clément Siriex <clement.sirieix@mistral.ai> Co-Authored-By: Kim-Adeline Miguel <kimadeline.miguel@mistral.ai> Co-Authored-By: Thaddee Tyl <thaddee.tyl@gmail.com> Co-Authored-By: David Brochart <david.brochart@gmail.com> Co-Authored-By: Joseph Guhlin <joseph.guhlin@gmail.com> Co-Authored-By: Thomas Kenbeek <thomaskenbeek@gmail.com> Co-Authored-By: Remenby31 <baptiste.cruvellier31@gmail.com>
This commit is contained in:
parent
79f215d91c
commit
d33db9fff8
217 changed files with 16911 additions and 4305 deletions
72
tests/cli/test_external_editor.py
Normal file
72
tests/cli/test_external_editor.py
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
"""Tests for the external editor module."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from unittest.mock import patch
|
||||
|
||||
from vibe.cli.textual_ui.external_editor import ExternalEditor
|
||||
|
||||
|
||||
class TestGetEditor:
|
||||
def test_returns_visual_first(self) -> None:
|
||||
with patch.dict("os.environ", {"VISUAL": "vim", "EDITOR": "nvim"}, clear=True):
|
||||
assert ExternalEditor.get_editor() == "vim"
|
||||
|
||||
def test_falls_back_to_editor(self) -> None:
|
||||
with patch.dict("os.environ", {"EDITOR": "nvim"}, clear=True):
|
||||
assert ExternalEditor.get_editor() == "nvim"
|
||||
|
||||
def test_falls_back_when_no_editor(self) -> None:
|
||||
with patch.dict("os.environ", {}, clear=True):
|
||||
assert ExternalEditor.get_editor() == "nano"
|
||||
|
||||
|
||||
class TestEdit:
|
||||
def test_returns_modified_content(self) -> None:
|
||||
with patch.dict("os.environ", {"VISUAL": "vim"}, clear=True):
|
||||
with patch("subprocess.run") as mock_run:
|
||||
with patch("pathlib.Path.read_text", return_value="modified"):
|
||||
with patch("pathlib.Path.unlink"):
|
||||
editor = ExternalEditor()
|
||||
result = editor.edit("original")
|
||||
assert result == "modified"
|
||||
mock_run.assert_called_once()
|
||||
|
||||
def test_returns_none_when_content_unchanged(self) -> None:
|
||||
with patch.dict("os.environ", {"VISUAL": "vim"}, clear=True):
|
||||
with patch("subprocess.run"):
|
||||
with patch("pathlib.Path.read_text", return_value="same"):
|
||||
with patch("pathlib.Path.unlink"):
|
||||
editor = ExternalEditor()
|
||||
result = editor.edit("same")
|
||||
assert result is None
|
||||
|
||||
def test_strips_trailing_whitespace(self) -> None:
|
||||
with patch.dict("os.environ", {"VISUAL": "vim"}, clear=True):
|
||||
with patch("subprocess.run"):
|
||||
with patch("pathlib.Path.read_text", return_value="content\n\n"):
|
||||
with patch("pathlib.Path.unlink"):
|
||||
editor = ExternalEditor()
|
||||
result = editor.edit("original")
|
||||
assert result == "content"
|
||||
|
||||
def test_handles_editor_with_args(self) -> None:
|
||||
with patch.dict("os.environ", {"VISUAL": "code --wait"}, clear=True):
|
||||
with patch("subprocess.run") as mock_run:
|
||||
with patch("pathlib.Path.read_text", return_value="edited"):
|
||||
with patch("pathlib.Path.unlink"):
|
||||
editor = ExternalEditor()
|
||||
editor.edit("original")
|
||||
call_args = mock_run.call_args[0][0]
|
||||
assert call_args[0] == "code"
|
||||
assert call_args[1] == "--wait"
|
||||
|
||||
def test_returns_none_on_subprocess_error(self) -> None:
|
||||
import subprocess as sp
|
||||
|
||||
with patch.dict("os.environ", {"VISUAL": "vim"}, clear=True):
|
||||
with patch("subprocess.run", side_effect=sp.CalledProcessError(1, "vim")):
|
||||
with patch("pathlib.Path.unlink"):
|
||||
editor = ExternalEditor()
|
||||
result = editor.edit("test")
|
||||
assert result is None
|
||||
Loading…
Add table
Add a link
Reference in a new issue