@@ -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]
15581606fn alias_of_command_and_flags ( ) {
15591607 let ( _, _, mut engine, mut stack) = new_engine ( ) ;
0 commit comments