aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/read.expect
diff options
context:
space:
mode:
authorGravatar Kevin Ballard <kevin@sb.org>2014-09-07 19:11:34 -0700
committerGravatar Kevin Ballard <kevin@sb.org>2014-09-07 23:56:59 -0700
commit190712d4b0fe97f8437b2f3c9b642dd5c46cf60f (patch)
treec023bb8866a40e5d278b6ab51256b1429cedf456 /tests/read.expect
parentefb1467e4ec70016204baaa9b88af658debbf973 (diff)
Add a test harness for interactive behavior
Add a test harness that uses `expect` to drive Fish to test interactive behavior. Include some tests for `read`.
Diffstat (limited to 'tests/read.expect')
-rw-r--r--tests/read.expect77
1 files changed, 77 insertions, 0 deletions
diff --git a/tests/read.expect b/tests/read.expect
new file mode 100644
index 00000000..3c153f73
--- /dev/null
+++ b/tests/read.expect
@@ -0,0 +1,77 @@
+# vim: set filetype=expect:
+
+proc expect_read_prompt {} {
+ expect -re "\\r\\n?read> $"
+}
+
+proc expect_marker {text} {
+ expect_prompt -re "\\r\\n@MARKER:$text@\\r\\n" {} unmatched {
+ abort "Couldn't find marker line '$text'"
+ }
+}
+
+spawn $fish
+
+expect_prompt
+
+# read
+
+send_line "read foo"
+expect_read_prompt
+send_line "text"
+expect_prompt
+print_var_contents foo
+
+send_line "read foo"
+expect_read_prompt
+send_line "again\r_marker 1"
+expect_prompt
+expect_marker 1
+print_var_contents foo
+
+send_line "read foo"
+expect_read_prompt
+send_line -h "bar\r_marker 2"
+expect_prompt
+expect_marker 2
+print_var_contents foo
+
+# read -n
+
+send_line "read -n 3 foo"
+expect_read_prompt
+send_line -h "123_marker 3"
+expect_prompt
+expect_marker 3
+print_var_contents foo
+
+send_line "read -n 3 foo"
+expect_read_prompt
+send_line "456_marker 4"
+expect_prompt
+expect_marker 4
+print_var_contents foo
+
+send_line "read -n 12 foo bar"
+expect_read_prompt
+send_line "hello world!_marker 5"
+expect_prompt
+expect_marker 5
+print_var_contents foo
+print_var_contents bar
+
+send_line "bind ` 'commandline -i test'`"
+expect_prompt
+send_line "read -n 4 foo"
+expect_read_prompt
+send_line "te`_marker 6"
+expect_prompt
+expect_marker 6
+print_var_contents foo
+
+send_line "read -n 4 foo"
+expect_read_prompt
+send_line -h "12`_marker 7"
+expect_prompt
+expect_marker 7
+print_var_contents foo