denoland/deno · #36736
fix(cli): generate valid bash completions
libs/cli_parser/src/completions.rs13 + / 4 −
@@ -46,15 +46,14 @@ fn generate_bash(cmd: &CommandDef) -> Vec<u8> { // Add subcommand detection for sub in cmd.subcommands { out.push_str(&format!(- " \"{name},{}\")\\n cmd=\"{name}__{}\"\n ;;\n",+ " \"{name},{}\")\n cmd=\"{name}__{}\"\n ;;\n", sub.name, sub.name.replace('-', "__"), )); } - out.push_str(- " *)\\n ;;\n esac\n done\n\n",- );+ out+ .push_str(" *)\n ;;\n esac\n done\n\n"); // Root command completions let root_flags: Vec<String> = cmd@@ -747,6 +746,16 @@ mod tests { assert!(v.iter().any(|f| f.starts_with("--")), "{v:?}"); } + #[test]+ fn generate_bash_uses_real_newlines() {+ let s = String::from_utf8(generate("bash", &DENO_ROOT)).unwrap();+ assert!(+ s.contains("\"deno,run\")\n cmd=\"deno__run\""),+ "{s}"+ );+ assert!(s.contains(" *)\n ;;"), "{s}");+ }+ #[test] fn generate_zsh_short_flags_keep_their_dash() { // Regression test for #36713: the brace expansion dropped the `-` on the