diff options
Diffstat (limited to 'test/unit/_known_hosts_real.exp')
-rw-r--r-- | test/unit/_known_hosts_real.exp | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/test/unit/_known_hosts_real.exp b/test/unit/_known_hosts_real.exp new file mode 100644 index 00000000..152cf885 --- /dev/null +++ b/test/unit/_known_hosts_real.exp @@ -0,0 +1,118 @@ +proc setup {} { + save_env +}; # setup() + + +proc teardown {} { + assert_env_unmodified { + /COMPREPLY=/d + /OLDHOME=/d + } +}; # teardown() + + +setup + + +set test "Hosts should be put in COMPREPLY" +set hosts [get_hosts] + # Hosts `gee', `hus' and `jar' are defined in ./fixtures/_known_hosts_real/config + # doo, ike, jub, 10.0.0.1, kyl and 100.0.0.2 in ./fixtures/_known_hosts_real/known_hosts +lappend hosts doo gee hus ike jar jub kyl 10.0.0.1 100.0.0.2 +set cmd {unset COMPREPLY; _known_hosts_real -aF fixtures/_known_hosts_real/config ''; echo_array COMPREPLY} +assert_bash_list $hosts $cmd $test + + +sync_after_int + + +set test "Hosts should have username prefix and colon suffix" +set hosts [get_hosts] + # Hosts `gee', `hus' and `jar' are defined in ./fixtures/_known_hosts_real/config + # doo, ike jub, 10.0.0.1, kyl and 100.0.0.2 in ./fixtures/_known_hosts_real/known_hosts +lappend hosts doo gee hus ike jar jub kyl 10.0.0.1 100.0.0.2 +set hosts [lsort -ascii $hosts] +set expected {} +foreach host $hosts { + lappend expected "user@$host:" +}; # foreach + # Call _known_hosts +set cmd {unset COMPREPLY; _known_hosts_real -acF fixtures/_known_hosts_real/config 'user@'; echo_array COMPREPLY} +assert_bash_list $expected $cmd $test + + +sync_after_int + + +set test "Files containing consecutive spaces should work" +set hosts [get_hosts] +set hosts_orig $hosts + # Hosts `gee' and `hus' are defined in `./fixtures/_known_hosts_real/spaced conf' + # Host `two' is defined in ./fixtures/_known_hosts_real/known_hosts2 +lappend hosts gee hus two +set hosts_config $hosts + # Hosts `doo' and `ike' are defined in `./fixtures/_known_hosts_/spaced known_hosts' +lappend hosts doo ike +set hosts [join [bash_sort $hosts ] "\\s+"] +set hosts_orig [join [bash_sort $hosts_orig ] "\\s+"] +set hosts_config [join [bash_sort $hosts_config] "\\s+"] + # Call _known_hosts +set cmd {unset COMPREPLY; _known_hosts_real -aF 'fixtures/_known_hosts_real/spaced conf' ''; echo_array COMPREPLY} +send "$cmd\r" +expect -ex "$cmd\r\n" +expect { + -re "^$hosts\r\n/@$" { pass "$test" } + -re "^$hosts_orig\r\n/@$" { fail "$test (config file)" } + -re "^$hosts_config\r\n/@$" { fail "$test (known hosts file)" } + -re /@ { unresolved "$test at prompt" } + default { unresolved "$test" } +}; # expect + + +sync_after_int + + +set test "Files starting with tilde (~) should work" +set hosts [get_hosts] + # Host `two' is defined in ./fixtures/_known_hosts_real/known_hosts2 + # Host `three' is defined in ./fixtures/_known_hosts_real/known_hosts3 +lappend hosts two three +set hosts [join [bash_sort $hosts] "\\s+"] + # Setup environment +set cmd {OLDHOME=$HOME; HOME=$TESTDIR} +send "$cmd\r" +expect -ex "$cmd\r\n/@" + # Call _known_hosts +set cmd {unset COMPREPLY; _known_hosts_real -aF fixtures/_known_hosts_real/config_tilde ''; echo_array COMPREPLY} +send "$cmd\r" +expect -ex "$cmd\r\n" +expect { + -re "^$hosts\r\n/@$" { pass "$test" } + default { unresolved "$test" } +}; # expect + # Teardown environment +set cmd {HOME=$OLDHOME} +send "$cmd\r" +expect -ex "$cmd\r\n/@" + + +sync_after_int + + +set test "Empty COMP_KNOWN_HOSTS_WITH_HOSTFILE should omit HOSTFILE" +assert_bash_exec "COMP_KNOWN_HOSTS_WITH_HOSTFILE=" +set hosts [get_hosts_avahi] + # Hosts `gee', `hus' and `jar' are defined in ./fixtures/_known_hosts_real/config + # doo, ike, jub, 10.0.0.1, kyl and 100.0.0.2 in ./fixtures/_known_hosts_real/known_hosts +lappend hosts doo gee hus ike jar jub kyl 10.0.0.1 100.0.0.2 + # Call _known_hosts +set cmd {unset COMPREPLY; _known_hosts_real -aF fixtures/_known_hosts_real/config ''; echo_array COMPREPLY} +assert_bash_list $hosts $cmd $test +sync_after_int +assert_bash_exec "unset -v COMP_KNOWN_HOSTS_WITH_HOSTFILE" + + +sync_after_int + + +teardown |