@@ -10,7 +10,7 @@ use nu_cli::NuCompleter;
1010use nu_engine:: eval_block;
1111use nu_parser:: parse;
1212use nu_path:: expand_tilde;
13- use nu_protocol:: { debugger:: WithoutDebug , engine:: StateWorkingSet , PipelineData } ;
13+ use nu_protocol:: { debugger:: WithoutDebug , engine:: StateWorkingSet , Config , PipelineData } ;
1414use reedline:: { Completer , Suggestion } ;
1515use rstest:: { fixture, rstest} ;
1616use support:: {
@@ -367,7 +367,7 @@ export def say [
367367
368368/// External command only if starts with `^`
369369#[ test]
370- fn external_commands_only ( ) {
370+ fn external_commands ( ) {
371371 let engine = new_external_engine ( ) ;
372372 let mut completer = NuCompleter :: new (
373373 Arc :: new ( engine) ,
@@ -390,6 +390,34 @@ fn external_commands_only() {
390390 match_suggestions ( & expected, & suggestions) ;
391391}
392392
393+ /// Disable external commands except for those start with `^`
394+ #[ test]
395+ fn external_commands_disabled ( ) {
396+ let mut engine = new_external_engine ( ) ;
397+
398+ let mut config = Config :: default ( ) ;
399+ config. completions . external . enable = false ;
400+ engine. set_config ( config) ;
401+
402+ let stack = nu_protocol:: engine:: Stack :: new ( ) ;
403+ let mut completer = NuCompleter :: new ( Arc :: new ( engine) , Arc :: new ( stack) ) ;
404+ let completion_str = "ls; ^sleep" ;
405+ let suggestions = completer. complete ( completion_str, completion_str. len ( ) ) ;
406+ #[ cfg( windows) ]
407+ let expected: Vec < _ > = vec ! [ "sleep.exe" ] ;
408+ #[ cfg( not( windows) ) ]
409+ let expected: Vec < _ > = vec ! [ "sleep" ] ;
410+ match_suggestions ( & expected, & suggestions) ;
411+
412+ let completion_str = "sleep" ;
413+ let suggestions = completer. complete ( completion_str, completion_str. len ( ) ) ;
414+ #[ cfg( windows) ]
415+ let expected: Vec < _ > = vec ! [ "sleep" ] ;
416+ #[ cfg( not( windows) ) ]
417+ let expected: Vec < _ > = vec ! [ "sleep" ] ;
418+ match_suggestions ( & expected, & suggestions) ;
419+ }
420+
393421/// Which completes both internals and externals
394422#[ test]
395423fn which_command_completions ( ) {
0 commit comments