52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from takopi.utils.paths import (
|
|
relativize_command,
|
|
relativize_path,
|
|
reset_run_base_dir,
|
|
set_run_base_dir,
|
|
)
|
|
|
|
|
|
def test_relativize_command_rewrites_cwd_paths(tmp_path: Path) -> None:
|
|
base = tmp_path / "repo"
|
|
base.mkdir()
|
|
command = f'find {base}/tests -type f -name "*.py" | head -20'
|
|
expected = 'find tests -type f -name "*.py" | head -20'
|
|
assert relativize_command(command, base_dir=base) == expected
|
|
|
|
|
|
def test_relativize_command_rewrites_equals_paths(tmp_path: Path) -> None:
|
|
base = tmp_path / "repo"
|
|
base.mkdir()
|
|
command = f'rg -n --files -g "*.py" --path={base}/src'
|
|
expected = 'rg -n --files -g "*.py" --path=src'
|
|
assert relativize_command(command, base_dir=base) == expected
|
|
|
|
|
|
def test_relativize_path_ignores_sibling_prefix(tmp_path: Path) -> None:
|
|
base = tmp_path / "repo"
|
|
base.mkdir()
|
|
value = str(tmp_path / "repo2" / "file.txt")
|
|
assert relativize_path(value, base_dir=base) == value
|
|
|
|
|
|
def test_relativize_path_inside_base(tmp_path: Path) -> None:
|
|
base = tmp_path / "repo"
|
|
base.mkdir()
|
|
value = str(base / "src" / "app.py")
|
|
assert relativize_path(value, base_dir=base) == "src/app.py"
|
|
|
|
|
|
def test_relativize_path_uses_run_base_dir(tmp_path: Path) -> None:
|
|
base = tmp_path / "repo"
|
|
base.mkdir()
|
|
token = set_run_base_dir(base)
|
|
try:
|
|
value = str(base / "src" / "app.py")
|
|
assert relativize_path(value) == "src/app.py"
|
|
finally:
|
|
reset_run_base_dir(token)
|