aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/read.in
diff options
context:
space:
mode:
Diffstat (limited to 'tests/read.in')
-rw-r--r--tests/read.in120
1 files changed, 120 insertions, 0 deletions
diff --git a/tests/read.in b/tests/read.in
new file mode 100644
index 00000000..893797a1
--- /dev/null
+++ b/tests/read.in
@@ -0,0 +1,120 @@
+# vim: set filetype=fish:
+#
+# Test read builtin and IFS
+#
+
+count (echo one\ntwo)
+set -l IFS \t
+count (echo one\ntwo)
+set -l IFS
+count (echo one\ntwo)
+echo [(echo -n one\ntwo)]
+count (echo one\ntwo\n)
+echo [(echo -n one\ntwo\n)]
+count (echo one\ntwo\n\n)
+echo [(echo -n one\ntwo\n\n)]
+set -le IFS
+
+function print_vars --no-scope-shadowing
+ set -l space
+ set -l IFS \n # ensure our command substitution works right
+ for var in $argv
+ echo -n $space (count $$var) \'$$var\'
+ set space ''
+ end
+ echo
+end
+
+echo
+echo 'hello there' | read -l one two
+print_vars one two
+echo 'hello there' | read -l one
+print_vars one
+echo '' | read -l one
+print_vars one
+echo '' | read -l one two
+print_vars one two
+echo 'test' | read -l one two three
+print_vars one two three
+echo 'foo bar baz' | read -l one two three
+print_vars one two three
+echo -n 'a' | read -l one
+echo "$status $one"
+
+echo
+set -l IFS
+echo 'hello' | read -l one
+print_vars one
+echo 'hello' | read -l one two
+print_vars one two
+echo 'hello' | read -l one two three
+print_vars one two three
+echo '' | read -l one
+print_vars one
+echo 't' | read -l one two
+print_vars one two
+echo 't' | read -l one two three
+print_vars one two three
+echo ' t' | read -l one two
+print_vars one two
+set -le IFS
+
+echo
+echo 'hello there' | read -la ary
+print_vars ary
+echo 'hello' | read -la ary
+print_vars ary
+echo 'this is a bunch of words' | read -la ary
+print_vars ary
+echo ' one two three' | read -la ary
+print_vars ary
+echo '' | read -la ary
+print_vars ary
+
+echo
+set -l IFS
+echo 'hello' | read -la ary
+print_vars ary
+echo 'h' | read -la ary
+print_vars ary
+echo '' | read -la ary
+print_vars ary
+set -le IFS
+
+# read -n tests
+
+echo
+echo '# read -n tests'
+echo 'testing' | read -n 3 foo
+echo $foo
+echo 'test' | read -n 10 foo
+echo $foo
+echo 'test' | read -n 0 foo
+echo $foo
+echo 'testing' | begin; read -n 3 foo; read -n 3 bar; end
+echo $foo
+echo $bar
+echo 'test' | read -n 1 foo
+echo $foo
+
+# read -0 tests
+
+echo
+echo '# read -z tests'
+echo -n 'testing' | read -lz foo
+echo $foo
+echo -n 'test ing' | read -lz foo
+echo $foo
+echo 'newline' | read -lz foo
+echo $foo
+echo -n 'test ing' | read -lz foo bar
+print_vars foo bar
+echo -ne 'test\0ing' | read -lz foo bar
+print_vars foo bar
+echo -ne 'foo\nbar' | read -lz foo bar
+print_vars foo bar
+echo -ne 'foo\nbar\0baz\nquux' | while read -lza foo
+ print_vars foo
+end
+
+true