Skip to content

Commit cca5f32

Browse files
committed
test(complete): Show empty option-value behavior
1 parent 3c14c63 commit cca5f32

File tree

4 files changed

+94
-0
lines changed

4 files changed

+94
-0
lines changed

clap_complete/tests/testsuite/bash.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,11 @@ fn complete() {
175175
let actual = runtime.complete(input, &term).unwrap();
176176
assert_data_eq!(actual, expected);
177177

178+
let input = "exhaustive --empty=\t";
179+
let expected = snapbox::str!["exhaustive --empty= % exhaustive --empty="];
180+
let actual = runtime.complete(input, &term).unwrap();
181+
assert_data_eq!(actual, expected);
182+
178183
// Issue 5239 (https://github.com/clap-rs/clap/issues/5239)
179184
let input = "exhaustive hint --file test\t";
180185
let expected = snapbox::str!["exhaustive hint --file test % exhaustive hint --file tests/"];
@@ -358,3 +363,20 @@ fn complete_dynamic_empty_subcommand() {
358363
let actual = runtime.complete(input, &term).unwrap();
359364
assert_data_eq!(actual, expected);
360365
}
366+
367+
#[test]
368+
#[cfg(all(unix, feature = "unstable-dynamic"))]
369+
#[cfg(feature = "unstable-shell-tests")]
370+
fn complete_dynamic_empty_option_value() {
371+
if !common::has_command(CMD) {
372+
return;
373+
}
374+
375+
let term = completest::Term::new();
376+
let mut runtime = common::load_runtime::<RuntimeBuilder>("dynamic-env", "exhaustive");
377+
378+
let input = "exhaustive --empty=\t";
379+
let expected = snapbox::str!["exhaustive --empty= % exhaustive --empty="];
380+
let actual = runtime.complete(input, &term).unwrap();
381+
assert_data_eq!(actual, expected);
382+
}

clap_complete/tests/testsuite/elvish.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,14 @@ value value
186186
let expected = snapbox::str![[r#"
187187
no candidates
188188
% exhaustive empty
189+
"#]];
190+
let actual = runtime.complete(input, &term).unwrap();
191+
assert_data_eq!(actual, expected);
192+
193+
let input = "exhaustive --empty=\t";
194+
let expected = snapbox::str![[r#"
195+
no candidates
196+
% exhaustive --empty=
189197
"#]];
190198
let actual = runtime.complete(input, &term).unwrap();
191199
assert_data_eq!(actual, expected);
@@ -323,3 +331,23 @@ no candidates
323331
let actual = runtime.complete(input, &term).unwrap();
324332
assert_data_eq!(actual, expected);
325333
}
334+
335+
#[test]
336+
#[cfg(all(unix, feature = "unstable-dynamic"))]
337+
#[cfg(feature = "unstable-shell-tests")]
338+
fn complete_dynamic_empty_option_value() {
339+
if !common::has_command(CMD) {
340+
return;
341+
}
342+
343+
let term = completest::Term::new();
344+
let mut runtime = common::load_runtime::<RuntimeBuilder>("dynamic-env", "exhaustive");
345+
346+
let input = "exhaustive --empty=\t";
347+
let expected = snapbox::str![[r#"
348+
no candidates
349+
% exhaustive --empty=
350+
"#]];
351+
let actual = runtime.complete(input, &term).unwrap();
352+
assert_data_eq!(actual, expected);
353+
}

clap_complete/tests/testsuite/fish.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,11 @@ CHANGELOG.md examples/ LICENSE-MIT src/
178178
let actual = runtime.complete(input, &term).unwrap();
179179
assert_data_eq!(actual, expected);
180180

181+
let input = "exhaustive --empty=\t";
182+
let expected = snapbox::str!["% exhaustive --empty="];
183+
let actual = runtime.complete(input, &term).unwrap();
184+
assert_data_eq!(actual, expected);
185+
181186
let input = "exhaustive quote --choice \t";
182187
let actual = runtime.complete(input, &term).unwrap();
183188
let expected = snapbox::str![[r#"
@@ -317,3 +322,20 @@ fn complete_dynamic_empty_subcommand() {
317322
let actual = runtime.complete(input, &term).unwrap();
318323
assert_data_eq!(actual, expected);
319324
}
325+
326+
#[test]
327+
#[cfg(all(unix, feature = "unstable-dynamic"))]
328+
#[cfg(feature = "unstable-shell-tests")]
329+
fn complete_dynamic_empty_option_value() {
330+
if !common::has_command(CMD) {
331+
return;
332+
}
333+
334+
let term = completest::Term::new();
335+
let mut runtime = common::load_runtime::<RuntimeBuilder>("dynamic-env", "exhaustive");
336+
337+
let input = "exhaustive --empty=\t";
338+
let expected = snapbox::str!["% exhaustive --empty="];
339+
let actual = runtime.complete(input, &term).unwrap();
340+
assert_data_eq!(actual, expected);
341+
}

clap_complete/tests/testsuite/zsh.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,11 @@ pacman action global alias value quote empty last --
175175
let expected = snapbox::str!["% exhaustive empty "];
176176
let actual = runtime.complete(input, &term).unwrap();
177177
assert_data_eq!(actual, expected);
178+
179+
let input = "exhaustive --empty=\t";
180+
let expected = snapbox::str!["% exhaustive --empty="];
181+
let actual = runtime.complete(input, &term).unwrap();
182+
assert_data_eq!(actual, expected);
178183
}
179184

180185
#[test]
@@ -306,3 +311,20 @@ fn complete_dynamic_empty_subcommand() {
306311
let actual = runtime.complete(input, &term).unwrap();
307312
assert_data_eq!(actual, expected);
308313
}
314+
315+
#[test]
316+
#[cfg(all(unix, feature = "unstable-dynamic"))]
317+
#[cfg(feature = "unstable-shell-tests")]
318+
fn complete_dynamic_empty_option_value() {
319+
if !common::has_command(CMD) {
320+
return;
321+
}
322+
323+
let term = completest::Term::new();
324+
let mut runtime = common::load_runtime::<RuntimeBuilder>("dynamic-env", "exhaustive");
325+
326+
let input = "exhaustive --empty=\t";
327+
let expected = snapbox::str!["% exhaustive --empty="];
328+
let actual = runtime.complete(input, &term).unwrap();
329+
assert_data_eq!(actual, expected);
330+
}

0 commit comments

Comments
 (0)