aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar Kurtis Rader <krader@skepticism.us>2015-12-23 15:24:45 -0800
committerGravatar Kurtis Rader <krader@skepticism.us>2015-12-23 21:41:48 -0800
commit6969cfab3dc20de9f757b94b8832b504ed1fdd40 (patch)
tree1c7a262d168135eb226aa655692b63945fff7cd3 /tests
parent814cb51eb5dafac779324cf8a9ce4c7894b3af9a (diff)
fix unit tests related to the escape timeout
Diffstat (limited to 'tests')
-rw-r--r--tests/bind.expect53
-rw-r--r--tests/bind.expect.out8
-rwxr-xr-x[-rw-r--r--]tests/interactive.fish14
-rwxr-xr-xtests/test.fish1
4 files changed, 46 insertions, 30 deletions
diff --git a/tests/bind.expect b/tests/bind.expect
index 25270955..6c80b8f1 100644
--- a/tests/bind.expect
+++ b/tests/bind.expect
@@ -1,48 +1,55 @@
# vim: set filetype=expect:
-
spawn $fish
-
expect_prompt
-# test switching key bindings
-# this should leave the mode in the appropriate state
+# Test switching key bindings to vi mode.
+# This should leave the mode in the appropriate state (i.e., insert mode).
-send_line "set -g fish_key_bindings fish_vi_key_bindings"
+send "set -g fish_key_bindings fish_vi_key_bindings\r"
expect_prompt
-send_line -h "echo fail\033ddiecho success"
+send -h "echo fail\033"
+# Delay needed to allow fish to transition to vi "normal" mode.
+sleep 0.510
+send -h "ddiecho success\r"
expect_prompt -re {\r\nsuccess\r\n} {
- puts "success"
+ puts "vi replace line success"
} -nounmatched -re {\r\nfail} {
- puts stderr "fail"
+ puts stderr "vi replace line fail"
} unmatched {
puts stderr "Couldn't find expected output 'success'"
}
-# try again without the human typing
-send_line -h "echo fail\033ddiecho success"
-expect_prompt -re {\r\nsuccess\r\n} {
- puts "success"
-} -nounmatched -re {\r\nfail} {
- puts stderr "fail"
+
+# Verify that a human can transpose words using \et (which is an emacs default
+# binding but should be valid while in vi insert mode).
+send "echo abc def\033"
+# Fish should still be in vi "insert" mode after this delay.
+sleep 0.400
+send "t\r"
+expect_prompt -re {\r\ndef abc\r\n} {
+ puts "vi transpose words success"
} unmatched {
- puts stderr "Couldn't find expected output 'success'"
+ puts stderr "vi transpose words fail"
}
-# Test lowercase-r replace
-send_line -h "\033ddiecho TEXT\033hhrAi"
+# Test replacing a single character.
+send -h "echo TEXT\033"
+# Delay needed to allow fish to transition to vi "normal" mode.
+sleep 0.510
+send -h "hhrAi\r"
expect_prompt -re {\r\nTAXT\r\n} {
- puts "replace success"
+ puts "vi mode replace success"
} -nounmatched -re {\r\nfail} {
- puts stderr "replace fail"
+ puts stderr "vi mode replace fail"
} unmatched {
puts stderr "Couldn't find expected output 'TAXT'"
}
-# still in insert mode, switch back to regular key bindings
-send_line -h "set -g fish_key_bindings fish_default_key_bindings"
+# Switch back to regular (emacs mode) key bindings.
+send -h "set -g fish_key_bindings fish_default_key_bindings\r"
expect_prompt
-send_line "echo success"
+send "echo success\r"
expect_prompt -re {\r\nsuccess\r\n} {
- puts "success"
+ puts "emacs success"
} unmatched {
puts stderr "Couldn't find expected output 'success'"
} timeout {
diff --git a/tests/bind.expect.out b/tests/bind.expect.out
index 7f883abd..f82eec23 100644
--- a/tests/bind.expect.out
+++ b/tests/bind.expect.out
@@ -1,4 +1,4 @@
-success
-success
-replace success
-success
+vi replace line success
+vi transpose words success
+vi mode replace success
+emacs success
diff --git a/tests/interactive.fish b/tests/interactive.fish
index ad53e262..9f5e979c 100644..100755
--- a/tests/interactive.fish
+++ b/tests/interactive.fish
@@ -2,7 +2,17 @@
#
# Interactive tests using `expect`
-source test_util.fish (status -f); or exit
+# Change to directory containing this script
+cd (dirname (status -f))
+
+# Test files specified on commandline, or all *.expect files
+if set -q argv[1]
+ set files_to_test $argv.expect
+else
+ set files_to_test *.expect
+end
+
+source test_util.fish (status -f) $argv; or exit
say -o cyan "Testing interactive functionality"
if not type -q expect
@@ -65,7 +75,7 @@ function test_file
end
set -l failed
-for i in *.expect
+for i in $files_to_test
if not test_file $i
set failed $failed $i
end
diff --git a/tests/test.fish b/tests/test.fish
index 994e7a76..588a8f35 100755
--- a/tests/test.fish
+++ b/tests/test.fish
@@ -6,7 +6,6 @@
cd (dirname (status -f))
# Test files specified on commandline, or all *.in files
-set -q argv[1]
if set -q argv[1]
set files_to_test $argv.in
else