Initial commit
Co-Authored-By: Quentin Torroba <quentin.torroba@mistral.ai> Co-Authored-By: Laure Hugo <laure.hugo@mistral.ai> Co-Authored-By: Benjamin Trom <benjamin.trom@mistral.ai> Co-Authored-By: Mathias Gesbert <mathias.gesbert@ext.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: Valentin Berard <val@mistral.ai> Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
commit
fa15fc977b
200 changed files with 30484 additions and 0 deletions
142
tests/autocompletion/test_path_prompt_transformer.py
Normal file
142
tests/autocompletion/test_path_prompt_transformer.py
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from vibe.core.autocompletion.path_prompt_adapter import (
|
||||
DEFAULT_MAX_EMBED_BYTES,
|
||||
render_path_prompt,
|
||||
)
|
||||
|
||||
|
||||
def test_treats_paths_to_files_as_embedded_resources(tmp_path: Path) -> None:
|
||||
readme = tmp_path / "README.md"
|
||||
readme.write_text("hello", encoding="utf-8")
|
||||
src_dir = tmp_path / "src"
|
||||
src_dir.mkdir()
|
||||
main_py = src_dir / "main.py"
|
||||
main_py.write_text("print('hi')", encoding="utf-8")
|
||||
|
||||
rendered = render_path_prompt(
|
||||
"Please review @README.md and @src/main.py",
|
||||
base_dir=tmp_path,
|
||||
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
|
||||
)
|
||||
|
||||
expected = (
|
||||
f"Please review README.md and src/main.py\n\n"
|
||||
f"{readme.as_uri()}\n```\nhello\n```\n\n"
|
||||
f"{main_py.as_uri()}\n```\nprint('hi')\n```"
|
||||
)
|
||||
assert rendered == expected
|
||||
|
||||
|
||||
def test_treats_path_to_directory_as_resource_links(tmp_path: Path) -> None:
|
||||
docs_dir = tmp_path / "docs"
|
||||
docs_dir.mkdir()
|
||||
|
||||
rendered = render_path_prompt(
|
||||
"See @docs/ for details",
|
||||
base_dir=tmp_path,
|
||||
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
|
||||
)
|
||||
|
||||
expected = f"See docs/ for details\n\nuri: {docs_dir.as_uri()}\nname: docs/"
|
||||
assert rendered == expected
|
||||
|
||||
|
||||
def test_keeps_emails_and_embeds_paths(tmp_path: Path) -> None:
|
||||
readme = tmp_path / "README.md"
|
||||
readme.write_text("hello", encoding="utf-8")
|
||||
|
||||
rendered = render_path_prompt(
|
||||
"Contact user@example.com about @README.md",
|
||||
base_dir=tmp_path,
|
||||
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
|
||||
)
|
||||
|
||||
expected = (
|
||||
f"Contact user@example.com about README.md\n\n"
|
||||
f"{readme.as_uri()}\n```\nhello\n```"
|
||||
)
|
||||
assert rendered == expected
|
||||
|
||||
|
||||
def test_ignores_nonexistent_paths(tmp_path: Path) -> None:
|
||||
rendered = render_path_prompt(
|
||||
"Missing @nope.txt here",
|
||||
base_dir=tmp_path,
|
||||
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
|
||||
)
|
||||
|
||||
assert rendered == "Missing @nope.txt here"
|
||||
|
||||
|
||||
def test_falls_back_to_link_for_binary_files(tmp_path: Path) -> None:
|
||||
binary_path = tmp_path / "image.bin"
|
||||
binary_path.write_bytes(b"\x00\x01\x02")
|
||||
|
||||
rendered = render_path_prompt(
|
||||
"Inspect @image.bin", base_dir=tmp_path, max_embed_bytes=DEFAULT_MAX_EMBED_BYTES
|
||||
)
|
||||
|
||||
assert (
|
||||
rendered == f"Inspect image.bin\n\nuri: {binary_path.as_uri()}\nname: image.bin"
|
||||
)
|
||||
|
||||
|
||||
def test_excludes_supposed_binary_files_quickly_before_reading_content(
|
||||
tmp_path: Path,
|
||||
) -> None:
|
||||
zip_like = tmp_path / "archive.zip"
|
||||
zip_like.write_text("text content inside but treated as binary", encoding="utf-8")
|
||||
|
||||
rendered = render_path_prompt(
|
||||
"Inspect @archive.zip",
|
||||
base_dir=tmp_path,
|
||||
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
|
||||
)
|
||||
|
||||
assert (
|
||||
rendered
|
||||
== f"Inspect archive.zip\n\nuri: {zip_like.as_uri()}\nname: archive.zip"
|
||||
)
|
||||
|
||||
|
||||
def test_applies_max_embed_size_guard(tmp_path: Path) -> None:
|
||||
large_file = tmp_path / "big.txt"
|
||||
large_file.write_text("a" * 50, encoding="utf-8")
|
||||
|
||||
rendered = render_path_prompt(
|
||||
"Review @big.txt", base_dir=tmp_path, max_embed_bytes=10
|
||||
)
|
||||
|
||||
assert rendered == f"Review big.txt\n\nuri: {large_file.as_uri()}\nname: big.txt"
|
||||
|
||||
|
||||
def test_parses_paths_with_special_characters_when_quoted(tmp_path: Path) -> None:
|
||||
weird = tmp_path / "weird name(1).txt"
|
||||
weird.write_text("odd", encoding="utf-8")
|
||||
|
||||
rendered = render_path_prompt(
|
||||
'Open @"weird name(1).txt"',
|
||||
base_dir=tmp_path,
|
||||
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
|
||||
)
|
||||
|
||||
assert rendered == f"Open weird name(1).txt\n\n{weird.as_uri()}\n```\nodd\n```"
|
||||
|
||||
|
||||
def test_deduplicates_identical_paths(tmp_path: Path) -> None:
|
||||
readme = tmp_path / "README.md"
|
||||
readme.write_text("hello", encoding="utf-8")
|
||||
|
||||
rendered = render_path_prompt(
|
||||
"See @README.md and again @README.md",
|
||||
base_dir=tmp_path,
|
||||
max_embed_bytes=DEFAULT_MAX_EMBED_BYTES,
|
||||
)
|
||||
|
||||
assert (
|
||||
rendered
|
||||
== f"See README.md and again README.md\n\n{readme.as_uri()}\n```\nhello\n```"
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue