mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-25 12:23:09 +00:00
131 lines
2.6 KiB
Fish
131 lines
2.6 KiB
Fish
# 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
|
|
|
|
echo
|
|
echo '# chunked read tests'
|
|
set -l path /tmp/fish_chunked_read_test.txt
|
|
set -l longstr (seq 1024 | string join ',')
|
|
echo -n $longstr > $path
|
|
read -l longstr2 < $path
|
|
test "$longstr" = "$longstr2"
|
|
and echo "Chunked reads test pass"
|
|
or echo "Chunked reads test failure: long strings don't match!"
|
|
rm $path
|
|
|
|
true
|