Skip to content

Commit a1242f1

Browse files
committed
test(completion): cell path completions
1 parent a48c541 commit a1242f1

File tree

1 file changed

+48
-0
lines changed
  • crates/nu-cli/tests/completions

1 file changed

+48
-0
lines changed

crates/nu-cli/tests/completions/mod.rs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1554,6 +1554,54 @@ fn variables_completions() {
15541554
match_suggestions(&expected, &suggestions);
15551555
}
15561556

1557+
#[test]
1558+
fn record_cell_path_completions() {
1559+
let (_, _, mut engine, mut stack) = new_engine();
1560+
let command = r#"let foo = {a: [1 {a: 2}]}; const bar = {a: [1 {a: 2}]}"#;
1561+
assert!(support::merge_input(command.as_bytes(), &mut engine, &mut stack).is_ok());
1562+
let mut completer = NuCompleter::new(Arc::new(engine), Arc::new(stack));
1563+
1564+
let expected: Vec<String> = vec!["a".into()];
1565+
let completion_str = "$foo.";
1566+
let suggestions = completer.complete(completion_str, completion_str.len());
1567+
match_suggestions(&expected, &suggestions);
1568+
1569+
let completion_str = "$foo.a.1.";
1570+
let suggestions = completer.complete(completion_str, completion_str.len());
1571+
match_suggestions(&expected, &suggestions);
1572+
1573+
let completion_str = "$bar.";
1574+
let suggestions = completer.complete(completion_str, completion_str.len());
1575+
match_suggestions(&expected, &suggestions);
1576+
1577+
let completion_str = "$bar.a.1.";
1578+
let suggestions = completer.complete(completion_str, completion_str.len());
1579+
match_suggestions(&expected, &suggestions);
1580+
}
1581+
1582+
#[test]
1583+
fn table_cell_path_completions() {
1584+
let (_, _, mut engine, mut stack) = new_engine();
1585+
let command = r#"let foo = [{a:{b:1}}, {a:{b:2}}]; const bar = [[a b]; [1 2]]"#;
1586+
assert!(support::merge_input(command.as_bytes(), &mut engine, &mut stack).is_ok());
1587+
let mut completer = NuCompleter::new(Arc::new(engine), Arc::new(stack));
1588+
1589+
let expected: Vec<String> = vec!["a".into()];
1590+
let completion_str = "$foo.";
1591+
let suggestions = completer.complete(completion_str, completion_str.len());
1592+
match_suggestions(&expected, &suggestions);
1593+
1594+
let expected: Vec<String> = vec!["b".into()];
1595+
let completion_str = "$foo.a.";
1596+
let suggestions = completer.complete(completion_str, completion_str.len());
1597+
match_suggestions(&expected, &suggestions);
1598+
1599+
let expected: Vec<String> = vec!["a".into(), "b".into()];
1600+
let completion_str = "$bar.";
1601+
let suggestions = completer.complete(completion_str, completion_str.len());
1602+
match_suggestions(&expected, &suggestions);
1603+
}
1604+
15571605
#[test]
15581606
fn alias_of_command_and_flags() {
15591607
let (_, _, mut engine, mut stack) = new_engine();

0 commit comments

Comments
 (0)