diff options
Diffstat (limited to 'tests/read.in')
-rw-r--r-- | tests/read.in | 120 |
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 |