aboutsummaryrefslogtreecommitdiff
path: root/tests/cli_wrapper.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cli_wrapper.rs')
-rw-r--r--tests/cli_wrapper.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/cli_wrapper.rs b/tests/cli_wrapper.rs
index ea402515..99d4f107 100644
--- a/tests/cli_wrapper.rs
+++ b/tests/cli_wrapper.rs
@@ -1031,6 +1031,7 @@ fn help_commands_exit_successfully() {
&["--help"],
&["api", "-h"],
&["api", "schema", "-h"],
+ &["completion", "-h"],
&["status", "-h"],
&["server", "-h"],
&["workspace", "-h"],
@@ -1060,6 +1061,46 @@ fn help_commands_exit_successfully() {
}
#[test]
+fn completion_command_prints_zsh_script_without_session_startup() {
+ let output = Command::new(env!("CARGO_BIN_EXE_herdr"))
+ .args(["completion", "zsh"])
+ .env_remove("HERDR_SOCKET_PATH")
+ .env_remove("HERDR_CLIENT_SOCKET_PATH")
+ .env_remove("HERDR_ENV")
+ .output()
+ .unwrap();
+
+ assert!(
+ output.status.success(),
+ "status={:?} stderr={}",
+ output.status.code(),
+ String::from_utf8_lossy(&output.stderr)
+ );
+ let stdout = String::from_utf8_lossy(&output.stdout);
+ assert!(stdout.contains("#compdef herdr"), "stdout: {stdout}");
+ assert!(
+ stdout.contains("bash elvish fish powershell zsh"),
+ "stdout: {stdout}"
+ );
+ assert!(
+ stdout.contains("'--direction[]:DIRECTION:(right down)'"),
+ "pane split/plugin pane open should complete --direction right|down without requiring equals: {stdout}"
+ );
+ assert!(
+ !stdout.contains("--cwd=[]"),
+ "zsh completions should not suggest equals-style values unsupported by most manual parsers: {stdout}"
+ );
+ assert!(
+ !stdout.contains("--direction=[]"),
+ "zsh completions should not suggest equals-style direction values: {stdout}"
+ );
+ assert!(
+ !stdout.contains("live-handoff"),
+ "internal server handoff command should not be completed: {stdout}"
+ );
+}
+
+#[test]
fn root_help_hides_explicit_client_command() {
let output = Command::new(env!("CARGO_BIN_EXE_herdr"))
.arg("--help")