proc setup {} { save_env # NOTE: Changing dir to $SRCDIR is necessary because file locations in the # ssh config files (e.g. UserKnownHostsFile) are relative to $SRCDIR. assert_bash_exec {cd $SRCDIR/fixtures/sftp} } proc teardown {} { assert_bash_exec {cd $TESTDIR} assert_env_unmodified { /BASH_LINENO=/d /BASH_SOURCE=/d /OLDPWD=/d } } setup # Build string list of expected completions set expected [get_hosts] # Hosts `gee' and `hut' are defined in ./fixtures/sftp/config # Hosts `10.10.10.10', `doo' and `ike' are defined in ./fixtures/sftp/known_hosts lappend expected 10.10.10.10 doo gee hut ike assert_complete $expected "sftp -F config " sync_after_int set test "-F without space shouldn't error" # Try completion set cmd "sftp -F" send "$cmd\t " expect { -re "^${cmd}bash: option requires an argument -- F" { fail "$test" } -re "^$cmd\r\n.*\r\n/@" { pass "$test" } -re /@ { unresolved "$test at prompt" } default { unresolved "$test" } } sync_after_int # Build string list of expected completions # Get hostnames and give them a colon (:) suffix set expected [get_hosts] # Hosts `gee' and `jar' are defined in "./fixtures/sftp/spaced conf" # Hosts `10.10.10.10', `doo' and `ike' are defined in ./fixtures/sftp/known_hosts lappend expected 10.10.10.10 doo gee ike jar assert_complete $expected "sftp -F spaced\\ \\ conf " sync_after_int teardown