use tempfile::TempDir;
use super::super::common::*;
#[test]
fn test_input_prefills_search_box() {
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"files",
"--input",
"UNIQUE16CHARID",
]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains("│> UNIQUE16CHARID");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_keybindings_override_default() {
let mut tester = PtyTester::new();
let mut child =
tester.spawn_command_tui(tv_local_config_and_cable_with_args(&[
"--keybindings",
"a=\"quit\";ctrl-c=\"no_op\";esc=\"no_op\"",
]));
tester.send(ESC);
tester.assert_tui_running(&mut child);
tester.send(&ctrl('c'));
tester.assert_tui_running(&mut child);
tester.send("'a'");
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_multiple_keybindings_override() {
let mut tester = PtyTester::new();
let mut child =
tester.spawn_command_tui(tv_local_config_and_cable_with_args(&[
"--keybindings",
"a=\"quit\";ctrl-x=\"toggle_remote_control\";esc=\"no_op\"",
]));
tester.send(ESC);
tester.assert_tui_running(&mut child);
tester.send(&ctrl('x'));
tester.assert_tui_frame_contains("(1) (2) (3)"); tester.send(&ctrl('t'));
tester.send("'a'");
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_exact_matching_enabled() {
let mut tester = PtyTester::new();
let tmp_dir = TempDir::new().unwrap();
std::fs::write(tmp_dir.path().join("UNIQUE16CHARIDfile.txt"), "").unwrap();
let cmd = tv_local_config_and_cable_with_args(&[
"files",
"--exact",
"--input",
"UNIQUE16CHARIDfile",
tmp_dir.path().to_str().unwrap(),
]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains("UNIQUE16CHARIDfile.txt");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_exact_matching_enabled_fails() {
let mut tester = PtyTester::new();
let tmp_dir = TempDir::new().unwrap();
std::fs::write(tmp_dir.path().join("UNIQUE16CHARIDfile.txt"), "").unwrap();
let cmd = tv_local_config_and_cable_with_args(&[
"files",
"--exact",
"--input",
"UNIQUE16CHARIDfl",
tmp_dir.path().to_str().unwrap(),
]);
let mut child = tester.spawn_command_tui(cmd);
tester.assert_tui_frame_contains("│> UNIQUE16CHARIDfl");
tester.assert_tui_frame_contains("0 / 0");
tester.assert_not_tui_frame_contains("UNIQUE16CHARIDfile.txt");
tester.send(&ctrl('c'));
tester.assert_exit_ok(&mut child, DEFAULT_DELAY);
}
#[test]
fn test_no_sort_preserves_source_order() {
use std::time::Duration;
let mut tester = PtyTester::new();
let cmd = tv_local_config_and_cable_with_args(&[
"--source-command",
"echo 'a-weak-b'; echo 'ab-strong'",
"--input",
"ab",
"--no-sort",
"--take-1",
]);
tester.spawn_command(cmd);
tester.assert_raw_output_contains_with_timeout(
"a-weak-b",
Duration::from_secs(2),
);
}