Files
nushell/tests/repl/test_commandline.rs
2025-02-13 08:49:48 +01:00

160 lines
3.9 KiB
Rust
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

use crate::repl::tests::{fail_test, run_test, TestResult};
#[test]
fn commandline_test_get_empty() -> TestResult {
run_test("commandline", "")
}
#[test]
fn commandline_test_append() -> TestResult {
run_test(
"commandline edit --replace '0👩👩2'\n\
commandline set-cursor 2\n\
commandline edit --append 'ab'\n\
print (commandline)\n\
commandline get-cursor",
"0👩👩2ab\n\
2",
)
}
#[test]
fn commandline_test_insert() -> TestResult {
run_test(
"commandline edit --replace '0👩👩2'\n\
commandline set-cursor 2\n\
commandline edit --insert 'ab'\n\
print (commandline)\n\
commandline get-cursor",
"0👩👩ab2\n\
4",
)
}
#[test]
fn commandline_test_replace() -> TestResult {
run_test(
"commandline edit --replace '0👩👩2'\n\
commandline edit --replace 'ab'\n\
print (commandline)\n\
commandline get-cursor",
"ab\n\
2",
)
}
#[test]
fn commandline_test_cursor() -> TestResult {
run_test(
"commandline edit --replace '0👩👩2'\n\
commandline set-cursor 1\n\
commandline edit --insert 'x'\n\
commandline",
"0x👩👩2",
)?;
run_test(
"commandline edit --replace '0👩👩2'\n\
commandline set-cursor 2\n\
commandline edit --insert 'x'\n\
commandline",
"0👩👩x2",
)
}
#[test]
fn commandline_test_cursor_show_pos_begin() -> TestResult {
run_test(
"commandline edit --replace '0👩👩'\n\
commandline set-cursor 0\n\
commandline get-cursor",
"0",
)
}
#[test]
fn commandline_test_cursor_show_pos_end() -> TestResult {
run_test(
"commandline edit --replace '0👩👩'\n\
commandline set-cursor 2\n\
commandline get-cursor",
"2",
)
}
#[test]
fn commandline_test_cursor_show_pos_mid() -> TestResult {
run_test(
"commandline edit --replace '0👩👩2'\n\
commandline set-cursor 1\n\
commandline get-cursor",
"1",
)?;
run_test(
"commandline edit --replace '0👩👩2'\n\
commandline set-cursor 2\n\
commandline get-cursor",
"2",
)
}
#[test]
fn commandline_test_cursor_too_small() -> TestResult {
run_test(
"commandline edit --replace '123456'\n\
commandline set-cursor -1\n\
commandline edit --insert '0'\n\
commandline",
"0123456",
)
}
#[test]
fn commandline_test_cursor_too_large() -> TestResult {
run_test(
"commandline edit --replace '123456'\n\
commandline set-cursor 10\n\
commandline edit --insert '0'\n\
commandline",
"1234560",
)
}
#[test]
fn commandline_test_cursor_invalid() -> TestResult {
fail_test(
"commandline edit --replace '123456'\n\
commandline set-cursor 'abc'",
"expected int",
)
}
#[test]
fn commandline_test_cursor_end() -> TestResult {
run_test(
"commandline edit --insert '🤔🤔'; commandline set-cursor --end; commandline get-cursor",
"2", // 2 graphemes
)
}
#[test]
fn commandline_test_cursor_type() -> TestResult {
run_test("commandline get-cursor | describe", "int")
}
#[test]
fn commandline_test_accept() -> TestResult {
// Explanation: run_test captures a command's output.
// But `--accept` executes a new command that then outputs "accepted".
// So `commandline edit -A` doesn't have any output.
// Therefore the additional test that pipes to `commandline`
run_test("commandline edit --accept \"print accepted\"", "")
}
#[test]
fn commandline_test_accepted_command() -> TestResult {
run_test(
"commandline edit --accept \"print accepted\"\n | commandline",
"print accepted",
)
}