summaryrefslogtreecommitdiff
path: root/test/unit/_known_hosts_real.exp
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/_known_hosts_real.exp')
-rw-r--r--test/unit/_known_hosts_real.exp118
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