import subprocess
import time
from conftest import dismiss_launch_popup
from tui import Tui
def provider_pids(tui: Tui) -> list[str]:
out = subprocess.run(
["pgrep", "-P", str(tui._proc.pid), "-f", "fs_provider.py"],
capture_output=True,
text=True,
).stdout.split()
return [p for p in out]
def test_fs_provider_search_to_tree_to_preview(provider_tui: Tui) -> None:
tui = provider_tui
tui.type_query("alpha")
tui.key("ENTER")
screen = tui.expect("local/alpha")
assert "[repo]" in screen
tui.key("ENTER")
screen = tui.expect("README.md")
assert "src/" in screen
tui.expect("main.rs")
tui.send("l") tui.expect("main.rs")
screen = tui.expect("fn render")
assert "rootle" in screen
def test_fs_provider_grep_over_stdio(provider_tui: Tui) -> None:
tui = provider_tui
dismiss_launch_popup(tui)
tui.send(" ")
tui.send("g")
screen = tui.expect("grep")
assert "global" in screen
tui.type_query("render")
tui.key("ENTER")
screen = tui.expect("alpha/src/main.rs")
assert "matches" in screen assert "fn render() -> &'static str {" in screen
def test_provider_process_is_spawned_and_child(provider_tui: Tui) -> None:
tui = provider_tui
tui.expect("search github")
assert provider_pids(tui), "provider child should be running"
tui.stop()
assert not provider_pids(tui), "provider child should die with the app"