use nu_cli::{NushellPrompt, update_prompt};
use nu_test_support::prelude::*;
use reedline::{Prompt, PromptEditMode};
#[test]
fn test_update_prompt_with_osc133() {
let mut tester = test()
.env("PROMPT_COMMAND", "❯ ")
.env("PROMPT_INDICATOR", "> ")
.env("PROMPT_COMMAND_RIGHT", "~/code")
.env("PROMPT_MULTILINE_INDICATOR", "... ")
.env("PWD", "/test");
let config = tester.engine_state.get_config().clone();
update_prompt(&config, &tester.engine_state, &mut tester.stack);
let prompt = NushellPrompt::shared(tester.engine_state.prompt_state.clone());
let left = prompt.render_prompt_left();
let indicator = prompt.render_prompt_indicator(PromptEditMode::Default);
let right = prompt.render_prompt_right();
let multiline = prompt.render_prompt_multiline_indicator();
assert_eq!(left.as_ref(), "❯ ");
assert_eq!(indicator.as_ref(), "> ");
assert_eq!(right.as_ref(), "~/code");
assert_eq!(multiline.as_ref(), "... ");
}
#[test]
fn test_update_prompt_with_osc633() {
let mut tester = test().env("PROMPT_COMMAND", "❯ ").env("PWD", "/test");
let config = tester.engine_state.get_config().clone();
update_prompt(&config, &tester.engine_state, &mut tester.stack);
let prompt = NushellPrompt::shared(tester.engine_state.prompt_state.clone());
let left = prompt.render_prompt_left();
assert_eq!(left.as_ref(), "❯ ");
}
#[test]
fn test_update_prompt_left_and_right() {
let mut tester = test()
.env("PROMPT_COMMAND", "❯ ")
.env("PROMPT_COMMAND_RIGHT", "~/code")
.env("PWD", "/test");
let config = tester.engine_state.get_config().clone();
update_prompt(&config, &tester.engine_state, &mut tester.stack);
let prompt = NushellPrompt::shared(tester.engine_state.prompt_state.clone());
let left = prompt.render_prompt_left();
let right = prompt.render_prompt_right();
assert_eq!(left.as_ref(), "❯ ");
assert_eq!(right.as_ref(), "~/code");
}
#[test]
fn test_update_prompt_multiline() {
let mut tester = test()
.env("PROMPT_MULTILINE_INDICATOR", "... ")
.env("PWD", "/test");
let config = tester.engine_state.get_config().clone();
update_prompt(&config, &tester.engine_state, &mut tester.stack);
let prompt = NushellPrompt::shared(tester.engine_state.prompt_state.clone());
let multiline = prompt.render_prompt_multiline_indicator();
assert_eq!(multiline.as_ref(), "... ");
}
#[test]
fn test_update_prompt_with_missing_vars() {
let mut tester = test().env("PWD", "/test");
let config = tester.engine_state.get_config().clone();
update_prompt(&config, &tester.engine_state, &mut tester.stack);
let prompt = NushellPrompt::shared(tester.engine_state.prompt_state.clone());
let left = prompt.render_prompt_left();
assert!(!left.as_ref().is_empty());
}
#[test]
fn test_osc133_config_toggle() -> Result {
test()
.run("$env.config.shell_integration.osc133")
.expect_value_eq(true)?;
test()
.run(
"
$env.config.shell_integration.osc133 = false
$env.config.shell_integration.osc133
",
)
.expect_value_eq(false)
}
#[test]
fn test_osc633_config_toggle() -> Result {
test()
.run("$env.config.shell_integration.osc633")
.expect_value_eq(true)?;
test()
.run(
"
$env.config.shell_integration.osc633 = false
$env.config.shell_integration.osc633
",
)
.expect_value_eq(false)
}