spec test index / oilshell.org
289 passed, 13 OK, 62 not implemented, 29 BUG, 3 failed, 0 timeouts, 0 cases skipped 3 failed under osh
zsh | 0 echo dashes stdout: -- ---stderr: |
dash | 1 echo backslashes stdout: \ \ \ \stderr: |
mksh | 1 echo backslashes stdout: \ \ \ \stderr: |
zsh | 1 echo backslashes stdout: \ \ \ \stderr: |
dash | 2 echo -e backslashes stdout: -e \ -e \ -e \ -e \stderr: |
dash | 3 echo -en stdout: -en abc defstderr: |
dash | 4 echo -ez (invalid flag) stdout: -ez abcstderr: |
mksh | 4 echo -ez (invalid flag) stdout: -ez abcstderr: |
zsh | 4 echo -ez (invalid flag) stdout: -ez abcstderr: |
dash | 7 echo -e with C escapes stdout: -e \d\estderr: |
dash | 8 echo -e with whitespace C escapes stdout: -estderr: |
dash | 9 \0 stdout: -e ab cdstderr: |
mksh | 10 \c stops processing input stdout: xy abde zzzstderr: |
dash | 11 echo -e with hex escape stdout: -e abcd\x65fstderr: |
dash | 13 echo -e with 4 digit unicode escape stdout: abcd\u0065fstderr: |
ash | 13 echo -e with 4 digit unicode escape stdout: abcd\u0065fstderr: |
dash | 14 echo -e with 8 digit unicode escape stdout: abcd\U00000065fstderr: |
ash | 14 echo -e with 8 digit unicode escape stdout: abcd\U00000065fstderr: |
dash | 15 \0377 is the highest octal byte stdout: 2d 65 6e 20 ff 37 0astderr: |
dash | 16 \0400 is one more than the highest octal byte stdout: 2d 65 6e 20 00 30 0astderr: |
ash | 16 \0400 is one more than the highest octal byte stdout: 20 30 30stderr: |
mksh | 17 \0777 is out of range stdout: c3 bfstderr: |
ash | 17 \0777 is out of range stdout: 3f 37stderr: |
dash | 18 incomplete hex escape stdout: - e n a b c d \ x 6 \nstderr: |
dash | 19 \x stdout: - e \ x \ x g \nstderr: |
mksh | 19 \x stdout: \0 \0 g \nstderr: |
zsh | 19 \x stdout: \0 \0 g \nstderr: |
dash | 21 incomplete unicode escape stdout: - e n a b c d \ u 0 0 6 \nstderr: |
ash | 21 incomplete unicode escape stdout: a b c d \ u 0 0 6stderr: |
dash | 22 \u6 stdout: \ u 6stderr: |
ash | 22 \u6 stdout: \ u 6stderr: |
dash | 23 \0 \1 \8 stdout: \0 001 \ 8stderr: |
ash | 23 \0 \1 \8 stdout: \0 001 \ 8stderr: |
dash | 25 Read from empty file stdout: ['status=1', ''] ['status=2', '']stderr: dash: 5: read: arg count |
dash | 26 read /dev/null stdout: 2stderr: dash: 1: read: Illegal option -n |
dash | 27 read with zero args stdout: status=2stderr: dash: 1: read: arg count |
dash | 31 Read -n (with $REPLY) stdout: []stderr: dash: 2: read: Illegal option -n dash: 3: read: Illegal option -n |
zsh | 31 Read -n (with $REPLY) stdout: []stderr: |
dash | 32 IFS= read -n (OSH regression: value saved in tempenv) stdout: ['']stderr: dash: 2: read: Illegal option -n |
zsh | 32 IFS= read -n (OSH regression: value saved in tempenv) stdout: ['']stderr: |
bash | 33 read -n with invalid arg stdout: status=1stderr: bash: line 1: read: not_a_number: invalid number |
zsh | 33 read -n with invalid arg stdout: stderr: |
dash | 34 read -n from pipe stdout: stderr: |
zsh | 34 read -n from pipe stdout: stderr: |
ash | 34 read -n from pipe stdout: stderr: |
dash | 35 Read uses $REPLY (without -n) stdout: stderr: dash: 2: read: arg count |
mksh | 37 read -r with other backslash escapes stdout: ['one twoethree', 'one\\ twoethree']stderr: |
zsh | 37 read -r with other backslash escapes stdout: ['one twoethree', 'one\\ twoethree']stderr: |
dash | 38 read with line continuation reads multiple physical lines stdout: ['-e onetwo', '-e one\\']stderr: |
dash | 40 read -r with \n stdout: ['', '']stderr: |
mksh | 40 read -r with \n stdout: ['', '']stderr: |
zsh | 40 read -r with \n stdout: ['', '']stderr: |
dash | 41 read -s from pipe, not a terminal stdout: stderr: |
zsh | 41 read -s from pipe, not a terminal stdout: stderr: |
dash | 42 Read with IFS=$'\n' stdout: [a b c]stderr: |
dash | 45 Read should not respect C escapes. stdout: stderr: |
mksh | 45 Read should not respect C escapes. stdout: d g h e 145 istderr: |
zsh | 45 Read should not respect C escapes. stdout: stderr: |
ash | 45 Read should not respect C escapes. stdout: abcdefghx65 145 istderr: |
dash | 47 read -a reads into array stdout: stderr: |
mksh | 47 read -a reads into array stdout: stderr: |
zsh | 47 read -a reads into array stdout: stderr: |
ash | 47 read -a reads into array stdout: stderr: ash: read: line 7: illegal option -a ash: syntax error: bad substitution |
dash | 48 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 |
dash | 49 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 |
dash | 50 read -rd stdout: stderr: dash: 1: read: Illegal option -d |
dash | 51 read -d when there's no delimiter stdout: 2 2stderr: dash: 1: read: Illegal option -d dash: 3: read: Illegal option -d |
dash | 52 read -t 0 tests if input is available stdout: stderr: |
mksh | 52 read -t 0 tests if input is available stdout: stderr: |
zsh | 52 read -t 0 tests if input is available stdout: stderr: |
dash | 53 read -t 0.5 stdout: stderr: |
mksh | 53 read -t 0.5 stdout: 1stderr: |
zsh | 53 read -t 0.5 stdout: 1stderr: |
osh | 53 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) |
bash | 54 read -t -0.5 is invalid stdout: 1stderr: |
zsh | 54 read -t -0.5 is invalid stdout: stderr: zsh: not an identifier: -0.5 |
dash | 55 read -u stdout: stderr: |
mksh | 55 read -u stdout: stderr: |
osh | 55 read -u [osh stdout] Expected 'reply=hi\n', got 'reply=\n' stdout: reply=stderr: |
bash | 56 read -u syntax error stdout: status=1stderr: bash: line 1: read: -3: invalid file descriptor specification |
zsh | 56 read -u syntax error stdout: status=1stderr: |
dash | 57 read -N doesn't respect delimiter, while read -n does stdout: stderr: |
mksh | 57 read -N doesn't respect delimiter, while read -n does stdout: fooba foobastderr: |
zsh | 57 read -N doesn't respect delimiter, while read -n does stdout: stderr: |
ash | 57 read -N doesn't respect delimiter, while read -n does stdout: stderr: |
osh | 57 read -N doesn't respect delimiter, while read -n does [osh stdout] Expected 'foo\nfooba\n', got 'fooba\nfooba\n' stdout: fooba foobastderr: echo foobar | { read -N 5 -d b; echo $REPLY; } ^~ [ stdin ]:4: 'read' doesn't accept flag -N |
dash | 58 read -p (not fully tested) stdout: stderr: |
mksh | 58 read -p (not fully tested) stdout: stderr: |
zsh | 58 read -p (not fully tested) stdout: stderr: |
bash | 59 read usage stdout: status=1stderr: bash: line 1: read: -1: invalid number |
mksh | 59 read usage stdout: stderr: |
zsh | 59 read usage stdout: stderr: zsh: not an identifier: -1 |
dash | 60 read with smooshed args stdout: var=stderr: dash: 1: read: Illegal option -n |
zsh | 60 read with smooshed args stdout: var=stderr: zsh: bad option: -1 echo: write error: broken pipe zsh: write error: inappropriate ioctl for device |
dash | 61 read -r -d '' for NUL strings, e.g. find -print0 stdout: stderr: |
mksh | 61 read -r -d '' for NUL strings, e.g. find -print0 stdout: stderr: |
zsh | 61 read -r -d '' for NUL strings, e.g. find -print0 stdout: stderr: |
mksh | 62 redirection from directory is non-fatal error) stdout: stderr: |
dash | 63 read -n from directory stdout: stderr: |
mksh | 63 read -n from directory stdout: stderr: |
ash | 63 read -n from directory stdout: stderr: |
dash | 64 mapfile from directory (bash doesn't handle errors) stdout: stderr: |
bash | 64 mapfile from directory (bash doesn't handle errors) stdout: status=0stderr: |
mksh | 64 mapfile from directory (bash doesn't handle errors) stdout: stderr: |
zsh | 64 mapfile from directory (bash doesn't handle errors) stdout: stderr: |
ash | 64 mapfile from directory (bash doesn't handle errors) stdout: stderr: |
dash | 65 Redirect to directory stdout: status=2 status=2stderr: dash: 1: cannot create ./dir: Is a directory dash: 3: cannot create ./dir: Is a directory |