Results for builtin-io.test.sh

statusdashbashmkshzshashosh
pass 215846404959
ok 332200
N-I 33061160
BUG 518970
FAIL 000003
total626262626262
casedashbashmkshzshashoshdescription
0pass pass pass BUG pass pass echo dashes
details
1BUG pass BUG BUG pass pass echo backslashes
detailsdetailsdetails
2N-I pass pass pass pass pass echo -e backslashes
details
3N-I pass pass pass pass pass echo -en
details
4ok pass ok ok pass pass echo -ez (invalid flag)
detailsdetailsdetails
5pass pass pass pass pass pass echo -e with embedded newline
6pass pass pass pass pass pass echo -e line continuation
7N-I pass pass pass pass pass echo -e with C escapes
details
8N-I pass pass pass pass pass echo -e with whitespace C escapes
details
9N-I pass pass pass pass pass \0
details
10pass pass N-I pass pass pass \c stops processing input
details
11N-I pass pass pass pass pass echo -e with hex escape
details
12pass pass pass pass pass pass echo -e with octal escape
13N-I pass pass pass N-I pass echo -e with 4 digit unicode escape
detailsdetails
14N-I pass pass pass N-I pass echo -e with 8 digit unicode escape
detailsdetails
15N-I pass pass pass pass pass \0377 is the highest octal byte
details
16N-I pass pass pass BUG pass \0400 is one more than the highest octal byte
detailsdetails
17pass pass BUG pass BUG pass \0777 is out of range
detailsdetails
18N-I pass pass pass pass pass incomplete hex escape
details
19N-I pass BUG BUG pass pass \x
detailsdetailsdetails
20pass pass pass pass pass pass incomplete octal escape
21N-I pass pass pass BUG pass incomplete unicode escape
detailsdetails
22N-I pass pass pass N-I pass \u6
detailsdetails
23BUG pass pass pass BUG pass \0 \1 \8
detailsdetails
24pass pass pass pass pass pass Read builtin
25ok pass pass pass pass pass Read from empty file
details
26ok pass pass pass pass pass read /dev/null
details
27BUG pass pass pass pass pass read with zero args
details
28pass pass pass pass pass pass Read builtin with no newline.
29pass pass pass pass pass pass Read builtin with multiple variables
30pass pass pass pass pass pass Read builtin with not enough variables
31N-I pass pass N-I pass pass Read -n (with $REPLY)
detailsdetails
32N-I pass pass N-I pass pass IFS= read -n (OSH regression: value saved in tempenv)
detailsdetails
33pass ok pass N-I pass pass read -n with invalid arg
detailsdetails
34N-I pass pass N-I N-I pass read -n from pipe
detailsdetailsdetails
35N-I pass pass pass pass pass Read uses $REPLY (without -n)
details
36pass pass pass pass pass pass read -r ignores backslashes
37pass pass BUG BUG pass pass read -r with other backslash escapes
detailsdetails
38N-I pass pass pass pass pass read with line continuation reads multiple physical lines
details
39pass pass pass pass pass pass read multiple vars spanning many lines
40BUG pass BUG BUG pass pass read -r with \n
detailsdetailsdetails
41N-I pass pass N-I pass pass read -s from pipe, not a terminal
detailsdetails
42N-I pass pass pass pass pass Read with IFS=$'\n'
details
43pass pass pass pass pass pass Read multiple lines with IFS=:
44pass pass pass pass pass pass Read with IFS=''
45BUG pass BUG BUG BUG pass Read should not respect C escapes.
detailsdetailsdetailsdetails
46pass pass pass pass pass pass Read builtin uses dynamic scope
47N-I pass N-I N-I N-I pass read -a reads into array
detailsdetailsdetailsdetails
48N-I pass pass pass BUG pass read -d : (colon-separated records)
detailsdetails
49N-I pass pass pass BUG pass read -d '' (null-separated records)
detailsdetails
50N-I pass pass pass pass pass read -rd
details
51N-I pass pass pass pass pass read -d when there's no delimiter
details
52N-I pass N-I N-I pass pass read -t 0 tests if input is available
detailsdetailsdetails
53N-I pass BUG BUG pass FAIL read -t 0.5
detailsdetailsdetailsdetails
54pass BUG pass BUG pass pass read -t -0.5 is invalid
detailsdetails
55N-I pass N-I pass pass FAIL read -u
detailsdetailsdetails
56pass ok pass ok pass pass read -u syntax error
detailsdetails
57N-I pass ok N-I N-I FAIL read -N doesn't respect delimiter, while read -n does
detailsdetailsdetailsdetailsdetails
58N-I pass N-I N-I pass pass read -p (not fully tested)
detailsdetailsdetails
59pass ok BUG BUG pass pass read usage
detailsdetailsdetails
60N-I pass pass N-I pass pass read with smooshed args
detailsdetails
61N-I pass N-I N-I pass pass read -r -d '' for NUL strings, e.g. find -print0
detailsdetailsdetails
273 passed, 10 OK, 56 not implemented, 30 BUG, 3 failed, 0 timeouts, 0 cases skipped
3 failed under osh

Details on runs that didn't PASS

zsh0 echo dashes

stdout:
--
---
stderr:
dash1 echo backslashes

stdout:
\
\
\
\
stderr:
mksh1 echo backslashes

stdout:
\
\
\
\
stderr:
zsh1 echo backslashes

stdout:
\
\
\
\
stderr:
dash2 echo -e backslashes

stdout:
-e \
-e \
-e \
-e \
stderr:
dash3 echo -en

stdout:
-en abc
def

stderr:
dash4 echo -ez (invalid flag)

stdout:
-ez abc

stderr:
mksh4 echo -ez (invalid flag)

stdout:
-ez abc

stderr:
zsh4 echo -ez (invalid flag)

stdout:
-ez abc

stderr:
dash7 echo -e with C escapes

stdout:
-e \d\e
stderr:
dash8 echo -e with whitespace C escapes

stdout:
-e 

	
stderr:
dash9 \0

stdout:
-e abcd
stderr:
mksh10 \c stops processing input

stdout:
xy abde zzz
stderr:
dash11 echo -e with hex escape

stdout:
-e abcd\x65f
stderr:
dash13 echo -e with 4 digit unicode escape

stdout:
abcd\u0065f
stderr:
ash13 echo -e with 4 digit unicode escape

stdout:
abcd\u0065f
stderr:
dash14 echo -e with 8 digit unicode escape

stdout:
abcd\U00000065f
stderr:
ash14 echo -e with 8 digit unicode escape

stdout:
abcd\U00000065f
stderr:
dash15 \0377 is the highest octal byte

stdout:
 2d 65 6e 20 ff 37 0a
stderr:
dash16 \0400 is one more than the highest octal byte

stdout:
 2d 65 6e 20 00 30 0a
stderr:
ash16 \0400 is one more than the highest octal byte

stdout:
 20 30 30
stderr:
mksh17 \0777 is out of range

stdout:
 c3 bf
stderr:
ash17 \0777 is out of range

stdout:
 3f 37
stderr:
dash18 incomplete hex escape

stdout:
 - e n a b c d \ x 6 \n
stderr:
dash19 \x

stdout:
 - e \ x \ x g \n
stderr:
mksh19 \x

stdout:
 \0 \0 g \n
stderr:
zsh19 \x

stdout:
 \0 \0 g \n
stderr:
dash21 incomplete unicode escape

stdout:
 - e n a b c d \ u 0 0 6 \n
stderr:
ash21 incomplete unicode escape

stdout:
 a b c d \ u 0 0 6
stderr:
dash22 \u6

stdout:
 \ u 6
stderr:
ash22 \u6

stdout:
 \ u 6
stderr:
dash23 \0 \1 \8

stdout:
 \0 001 \ 8
stderr:
ash23 \0 \1 \8

stdout:
 \0 001 \ 8
stderr:
dash25 Read from empty file

stdout:
['status=1', '']
['status=2', '']
stderr:
dash: 5: read: arg count
dash26 read /dev/null

stdout:
2
stderr:
dash: 1: read: Illegal option -n
dash27 read with zero args

stdout:
status=2
stderr:
dash: 1: read: arg count
dash31 Read -n (with $REPLY)

stdout:
[]
stderr:
dash: 2: read: Illegal option -n
dash: 3: read: Illegal option -n
zsh31 Read -n (with $REPLY)

stdout:
[]
stderr:
dash32 IFS= read -n (OSH regression: value saved in tempenv)

stdout:
['']
stderr:
dash: 2: read: Illegal option -n
zsh32 IFS= read -n (OSH regression: value saved in tempenv)

stdout:
['']
stderr:
bash33 read -n with invalid arg

stdout:
status=1
stderr:
bash: line 1: read: not_a_number: invalid number
zsh33 read -n with invalid arg

stdout:
stderr: 
dash34 read -n from pipe

stdout:
stderr: 
zsh34 read -n from pipe

stdout:
stderr: 
ash34 read -n from pipe

stdout:
stderr: 
dash35 Read uses $REPLY (without -n)

stdout:
stderr: 
dash: 2: read: arg count
mksh37 read -r with other backslash escapes

stdout:
['one twoethree', 'one\\ twoethree']
stderr:
zsh37 read -r with other backslash escapes

stdout:
['one twoethree', 'one\\ twoethree']
stderr:
dash38 read with line continuation reads multiple physical lines

stdout:
['-e onetwo', '-e one\\']
stderr:
dash40 read -r with \n

stdout:
['', '']
stderr:
mksh40 read -r with \n

stdout:
['', '']
stderr:
zsh40 read -r with \n

stdout:
['', '']
stderr:
dash41 read -s from pipe, not a terminal

stdout:
stderr: 
zsh41 read -s from pipe, not a terminal

stdout:
stderr: 
dash42 Read with IFS=$'\n'

stdout:
[a b c]
stderr:
dash45 Read should not respect C escapes.

stdout:
 
stderr:
mksh45 Read should not respect C escapes.

stdout:
  d   g h e 145 i
stderr:
zsh45 Read should not respect C escapes.

stdout:
 
stderr:
ash45 Read should not respect C escapes.

stdout:
abcdefghx65 145 i
stderr:
dash47 read -a reads into array

stdout:
stderr: 
mksh47 read -a reads into array

stdout:
stderr: 
zsh47 read -a reads into array

stdout:
stderr: 
ash47 read -a reads into array

stdout:
stderr: 
ash: read: line 7: illegal option -a
ash: syntax error: bad substitution
dash48 read -d : (colon-separated records)

stdout:
v1=
v1= v2=
v1= v2= v3=
stderr:
dash: 3: read: Illegal option -d
dash: 5: read: Illegal option -d
dash: 7: read: Illegal option -d
ash48 read -d : (colon-separated records)

stdout:
v1=a,b,c
v1=d,e,f v2=
v1=g,h,i v2= v3=
stderr:
dash49 read -d '' (null-separated records)

stdout:
v1=
v1= v2=
v1= v2= v3=
stderr:
dash: 3: read: Illegal option -d
dash: 5: read: Illegal option -d
dash: 7: read: Illegal option -d
ash49 read -d '' (null-separated records)

stdout:
v1=a,b,cd,e,fg,h,i
v1= v2=
v1= v2= v3=
stderr:
dash50 read -rd

stdout:
stderr: 
dash: 1: read: Illegal option -d
dash51 read -d when there's no delimiter

stdout:
2
2
stderr:
dash: 1: read: Illegal option -d
dash: 3: read: Illegal option -d
dash52 read -t 0 tests if input is available

stdout:
stderr: 
mksh52 read -t 0 tests if input is available

stdout:
stderr: 
zsh52 read -t 0 tests if input is available

stdout:
stderr: 
dash53 read -t 0.5

stdout:
stderr: 
mksh53 read -t 0.5

stdout:
1
stderr:
zsh53 read -t 0.5

stdout:
1
stderr:
osh53 read -t 0.5

[osh stdout] Expected '1\n', got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
  read -t 0.5 < /dev/null
  ^~~~
[ stdin ]:3: fatal: read -t isn't implemented (except t=0)
bash54 read -t -0.5 is invalid

stdout:
1
stderr:
zsh54 read -t -0.5 is invalid

stdout:
stderr: 
zsh: not an identifier: -0.5
dash55 read -u

stdout:
stderr: 
mksh55 read -u

stdout:
stderr: 
osh55 read -u

[osh stdout] Expected 'reply=hi\n', got 'reply=\n'

stdout:
reply=
stderr:
bash56 read -u syntax error

stdout:
status=1
stderr:
bash: line 1: read: -3: invalid file descriptor specification
zsh56 read -u syntax error

stdout:
status=1
stderr:
dash57 read -N doesn't respect delimiter, while read -n does

stdout:
stderr: 
mksh57 read -N doesn't respect delimiter, while read -n does

stdout:
fooba
fooba
stderr:
zsh57 read -N doesn't respect delimiter, while read -n does

stdout:
stderr: 
ash57 read -N doesn't respect delimiter, while read -n does

stdout:
stderr: 
osh57 read -N doesn't respect delimiter, while read -n does

[osh stdout] Expected 'foo\nfooba\n', got 'fooba\nfooba\n'

stdout:
fooba
fooba
stderr:
  echo foobar | { read -N 5 -d b; echo $REPLY; }
                       ^~
[ stdin ]:4: 'read' doesn't accept flag -N
dash58 read -p (not fully tested)

stdout:
stderr: 
mksh58 read -p (not fully tested)

stdout:
stderr: 
zsh58 read -p (not fully tested)

stdout:
stderr: 
bash59 read usage

stdout:
status=1
stderr:
bash: line 1: read: -1: invalid number
mksh59 read usage

stdout:
stderr: 
zsh59 read usage

stdout:
stderr: 
zsh: not an identifier: -1
dash60 read with smooshed args

stdout:
var=
stderr:
dash: 1: read: Illegal option -n
zsh60 read with smooshed args

stdout:
var=
stderr:
zsh: bad option: -1
dash61 read -r -d '' for NUL strings, e.g. find -print0

stdout:
stderr: 
mksh61 read -r -d '' for NUL strings, e.g. find -print0

stdout:
stderr: 
zsh61 read -r -d '' for NUL strings, e.g. find -print0

stdout:
stderr: