release: 0.3.0 persistent history, configurable openers, and dev info panel
This commit is contained in:
@@ -121,7 +121,7 @@ def test_toggle_history_mode_selects_current_history_entry(tmp_path: Path) -> No
|
||||
ui._toggle_history_mode(navigator)
|
||||
|
||||
assert ui._history_mode is True
|
||||
assert ui._history_selected_index == 1
|
||||
assert ui._history_selected_index == 0
|
||||
|
||||
|
||||
def test_history_mode_enter_selects_entry_and_exits(tmp_path: Path) -> None:
|
||||
@@ -141,7 +141,7 @@ def test_history_mode_enter_selects_entry_and_exits(tmp_path: Path) -> None:
|
||||
|
||||
ui = TerminalUI()
|
||||
ui._toggle_history_mode(navigator)
|
||||
ui._handle_history_key(curses.KEY_UP, navigator)
|
||||
ui._handle_history_key(curses.KEY_DOWN, navigator)
|
||||
ui._handle_history_key(10, navigator)
|
||||
|
||||
assert ui._history_mode is False
|
||||
@@ -149,6 +149,30 @@ def test_history_mode_enter_selects_entry_and_exits(tmp_path: Path) -> None:
|
||||
assert navigator.selected_index == 0
|
||||
|
||||
|
||||
def test_history_mode_renders_most_recent_entry_first(tmp_path: Path) -> None:
|
||||
root = tmp_path / "root"
|
||||
first = root / "first"
|
||||
second = root / "second"
|
||||
root.mkdir()
|
||||
first.mkdir()
|
||||
second.mkdir()
|
||||
|
||||
navigator = Navigator(root)
|
||||
navigator.set_selected_index(1)
|
||||
navigator.enter_selected_directory()
|
||||
navigator.go_to_parent_directory()
|
||||
navigator.set_selected_index(2)
|
||||
navigator.enter_selected_directory()
|
||||
|
||||
ui = TerminalUI()
|
||||
ui._toggle_history_mode(navigator)
|
||||
lines, _selected_index = ui._build_history_lines_for_render(
|
||||
navigator.history.entries()
|
||||
)
|
||||
|
||||
assert lines[0].text == str(second.resolve())
|
||||
|
||||
|
||||
def test_history_mode_slash_activates_history_filter() -> None:
|
||||
ui = TerminalUI()
|
||||
navigator = Navigator(Path.cwd())
|
||||
@@ -329,7 +353,12 @@ def test_build_status_line_shows_filter_off_when_filter_mode_is_disabled(
|
||||
root.mkdir()
|
||||
navigator = Navigator(root)
|
||||
|
||||
status_line = build_status_line(navigator, filter_mode=False, filter_query="")
|
||||
status_line = build_status_line(
|
||||
navigator,
|
||||
filter_mode=False,
|
||||
filter_query="",
|
||||
dev_summary="git:- stack:-",
|
||||
)
|
||||
|
||||
assert "filter: off" in status_line
|
||||
|
||||
@@ -341,7 +370,12 @@ def test_build_status_line_shows_empty_filter_without_off_when_filter_is_active(
|
||||
root.mkdir()
|
||||
navigator = Navigator(root)
|
||||
|
||||
status_line = build_status_line(navigator, filter_mode=True, filter_query="")
|
||||
status_line = build_status_line(
|
||||
navigator,
|
||||
filter_mode=True,
|
||||
filter_query="",
|
||||
dev_summary="git:- stack:-",
|
||||
)
|
||||
|
||||
assert "filter: |" in status_line
|
||||
|
||||
@@ -422,6 +456,20 @@ def test_end_key_jumps_to_last_entry(tmp_path: Path) -> None:
|
||||
assert navigator.selected_index == len(navigator.visible_entries) - 1
|
||||
|
||||
|
||||
def test_info_mode_toggles_with_i_and_escape(tmp_path: Path) -> None:
|
||||
root = tmp_path / "root"
|
||||
root.mkdir()
|
||||
navigator = Navigator(root)
|
||||
ui = TerminalUI()
|
||||
|
||||
assert ui._info_mode is False
|
||||
assert ui._handle_tree_key(ord("i"), navigator) is None
|
||||
assert ui._info_mode is True
|
||||
|
||||
ui._handle_info_key(ESCAPE_KEY)
|
||||
assert ui._info_mode is False
|
||||
|
||||
|
||||
def test_open_terminal_streams_raises_without_terminal(
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
) -> None:
|
||||
|
||||
Reference in New Issue
Block a user