| status | bash | dash | mksh | ash | yash | osh | |
| pass | 47 | 47 | 46 | 47 | 43 | 45 | |
| ok | 3 | 0 | 3 | 0 | 0 | 0 | |
| N-I | 0 | 3 | 2 | 3 | 4 | 0 | |
| BUG | 2 | 2 | 1 | 2 | 5 | 0 | |
| FAIL | 0 | 0 | 0 | 0 | 0 | 7 | |
| total | 52 | 52 | 52 | 52 | 52 | 52 | |
| case | bash | dash | mksh | ash | yash | osh | description |
| 0 | pass | pass | pass | pass | pass | pass | IFS is scoped |
| 1 | pass | pass | pass | pass | pass | pass | Tilde sub is not split, but var sub is |
| 2 | pass | pass | pass | pass | pass | pass | Word splitting |
| 3 | pass | pass | pass | pass | pass | pass | Word splitting 2 |
| 4 | pass | pass | pass | pass | pass | pass | $* |
| 5 | pass | pass | pass | pass | pass | pass | "$*" |
| 6 | pass | pass | pass | pass | pass | pass | $@ |
| 7 | pass | pass | pass | pass | pass | pass | "$@" |
| 8 | pass | pass | pass | pass | pass | pass | empty argv |
| 9 | pass | pass | pass | pass | pass | pass | $* with empty IFS |
| 10 | pass | pass | pass | pass | pass | pass | Word elision with space |
| 11 | pass | pass | pass | pass | BUG | pass | Word elision with non-whitespace IFS |
| details | |||||||
| 12 | pass | pass | pass | pass | pass | pass | Leading/trailing word elision with non-whitespace IFS |
| 13 | pass | pass | pass | pass | pass | pass | Leading ' ' vs leading ' _ ' |
| 14 | pass | pass | pass | pass | pass | pass | Multiple non-whitespace IFS chars. |
| 15 | pass | pass | pass | pass | pass | pass | IFS with whitespace and non-whitepace. |
| 16 | pass | pass | pass | pass | pass | pass | empty $@ and $* is elided |
| 17 | pass | pass | pass | pass | pass | pass | unquoted empty arg is elided |
| 18 | pass | pass | pass | pass | pass | pass | unquoted whitespace arg is elided |
| 19 | pass | pass | pass | pass | pass | pass | empty literals are not elided |
| 20 | pass | pass | pass | pass | pass | pass | no splitting when IFS is empty |
| 21 | pass | pass | pass | pass | pass | pass | default value can yield multiple words |
| 22 | pass | pass | pass | pass | pass | pass | default value can yield multiple words with part joining |
| 23 | pass | pass | pass | pass | pass | pass | default value with unquoted IFS char |
| 24 | pass | pass | pass | pass | pass | pass | IFS empty doesn't do splitting |
| 25 | pass | pass | pass | pass | pass | pass | IFS unset behaves like $' \t\n' |
| 26 | pass | pass | pass | pass | pass | FAIL | IFS='\' |
| details | |||||||
| 27 | pass | pass | pass | pass | pass | FAIL | IFS='\ ' |
| details | |||||||
| 28 | pass | pass | pass | pass | pass | pass | IFS characters are glob metacharacters |
| 29 | pass | pass | pass | pass | pass | pass | Trailing space |
| 30 | pass | pass | pass | pass | pass | pass | Empty IFS (regression for bug) |
| 31 | pass | pass | pass | pass | pass | pass | Unset IFS (regression for bug) |
| 32 | pass | pass | pass | pass | pass | pass | IFS=o (regression for bug) |
| 33 | pass | pass | pass | pass | pass | pass | IFS and joining arrays |
| 34 | pass | BUG | pass | BUG | BUG | FAIL | IFS and joining arrays by assignments |
| details | details | details | details | ||||
| 35 | pass | pass | pass | pass | pass | pass | TODO |
| 36 | pass | pass | pass | pass | pass | pass | IFS='' with $@ and $* (bug #627) |
| 37 | pass | pass | pass | pass | pass | pass | IFS='' with $@ and $* and printf (bug #627) |
| 38 | pass | N-I | pass | N-I | pass | pass | IFS='' with ${a[@]} and ${a[*]} (bug #627) |
| details | details | ||||||
| 39 | BUG | N-I | N-I | N-I | N-I | pass | IFS='' with ${!prefix@} and ${!prefix*} (bug #627) |
| details | details | details | details | details | |||
| 40 | BUG | N-I | N-I | N-I | N-I | pass | IFS='' with ${!a[@]} and ${!a[*]} (bug #627) |
| details | details | details | details | details | |||
| 41 | pass | pass | pass | pass | pass | FAIL | Bug #628 split on : with : in literal word |
| details | |||||||
| 42 | pass | pass | pass | pass | pass | pass | Bug #698, similar crash |
| 43 | pass | pass | pass | pass | pass | FAIL | Bug #1664, \\ with noglob |
| details | |||||||
| 44 | pass | pass | pass | pass | pass | pass | Empty IFS bug #2141 (from pnut) |
| 45 | pass | BUG | BUG | BUG | pass | FAIL | Unicode in IFS |
| details | details | details | details | ||||
| 46 | pass | pass | pass | pass | BUG | pass | 4 x 3 table: (default IFS, IFS='', IFS=zx) x ( $* "$*" $@ "$@" ) |
| details | |||||||
| 47 | pass | pass | pass | pass | N-I | pass | 4 x 3 table - with for loop |
| details | |||||||
| 48 | ok | pass | ok | pass | N-I | pass | IFS=x and '' and $@ - same bug as spec/toysh-posix case #12 |
| details | details | details | |||||
| 49 | ok | pass | ok | pass | BUG | pass | IFS=x and '' and $@ (#2) |
| details | details | details | |||||
| 50 | ok | pass | ok | pass | BUG | pass | IFS=x and '' and $@ (#3) |
| details | details | details | |||||
| 51 | pass | pass | pass | pass | pass | FAIL | ""$A"" - empty string on both sides - derived from spec/toysh-posix #15 |
| details |
275 passed, 6 OK, 12 not implemented, 12 BUG, 7 failed, 0 timeouts, 0 cases skipped 7 failed under osh
| yash | 11 Word elision with non-whitespace IFS stdout: [] [' '] []stderr: |
| osh | 26 IFS='\' [osh stdout] Expected "['a', 'b']\n", got "['a', '', '', '', 'b']\n" stdout: ['a', '', '', '', 'b']stderr: |
| osh | 27 IFS='\ ' [osh stdout] Expected "['a', 'b', '', 'c', 'd']\n", got "['a', '', '', '', 'b', '', '', '', '', '', '', '', 'c', 'd', '', '', '']\n" stdout: ['a', '', '', '', 'b', '', '', '', '', '', '', '', 'c', 'd', '', '', '']stderr: |
| dash | 34 IFS and joining arrays by assignments stdout: ['x:y z'] ['x:y z'] ['x:y z'] ['x:y z']stderr: |
| ash | 34 IFS and joining arrays by assignments stdout: ['x:y z'] ['x:y z'] ['x:y z'] ['x:y z']stderr: |
| yash | 34 IFS and joining arrays by assignments stdout: ['x:y z'] ['x:y z'] ['x:y z'] ['x:y z']stderr: |
| osh | 34 IFS and joining arrays by assignments [osh stdout] Expected "['x y z']\n['x y z']\n['x:y z']\n['x:y z']\n" Got "['x y z']\n['x y z']\n['x:y z']\n['x y z']\n" stdout: ['x y z'] ['x y z'] ['x:y z'] ['x y z']stderr: |
| dash | 38 IFS='' with ${a[@]} and ${a[*]} (bug #627) stdout: stderr: |
| ash | 38 IFS='' with ${a[@]} and ${a[*]} (bug #627) stdout: stderr: |
| bash | 39 IFS='' with ${!prefix@} and ${!prefix*} (bug #627) stdout: ['at', 'gLwbmGzS_var1', 'gLwbmGzS_var2'] ['star', 'gLwbmGzS_var1gLwbmGzS_var2']stderr: |
| dash | 39 IFS='' with ${!prefix@} and ${!prefix*} (bug #627) stdout: stderr: |
| mksh | 39 IFS='' with ${!prefix@} and ${!prefix*} (bug #627) stdout: stderr: |
| ash | 39 IFS='' with ${!prefix@} and ${!prefix*} (bug #627) stdout: stderr: |
| yash | 39 IFS='' with ${!prefix@} and ${!prefix*} (bug #627) stdout: stderr: |
| bash | 40 IFS='' with ${!a[@]} and ${!a[*]} (bug #627) stdout: ['at', '0', '1', '2'] ['star', '0 1 2']stderr: |
| dash | 40 IFS='' with ${!a[@]} and ${!a[*]} (bug #627) stdout: stderr: |
| mksh | 40 IFS='' with ${!a[@]} and ${!a[*]} (bug #627) stdout: stderr: |
| ash | 40 IFS='' with ${!a[@]} and ${!a[*]} (bug #627) stdout: stderr: |
| yash | 40 IFS='' with ${!a[@]} and ${!a[*]} (bug #627) stdout: stderr: |
| osh | 41 Bug #628 split on : with : in literal word [osh stdout] Expected "['a', ':b']\n['a', ':']\n---\n['a', 'zb']\n['a', 'z']\n" Got "['a', '\\\\', 'b']\n['a', '\\\\']\n---\n['a', '\\\\', 'b']\n['a', '\\\\']\n" stdout: ['a', '\\', 'b'] ['a', '\\'] --- ['a', '\\', 'b'] ['a', '\\']stderr: |
| osh | 43 Bug #1664, \\ with noglob [osh stdout] Expected "['[\\\\]_']\n['[\\\\]_']\nnoglob\n['[\\\\]_']\n['[\\\\]_']\n" Got "['[\\\\]_']\n['[\\\\]_']\nnoglob\n['[\\\\\\\\]_']\n['[\\\\]_']\n" stdout: ['[\\]_'] ['[\\]_'] noglob ['[\\\\]_'] ['[\\]_']stderr: |
| dash | 45 Unicode in IFS stdout: <> <> <x>stderr: dash: 1: setopt: not found |
| mksh | 45 Unicode in IFS stdout: <> <> <x>stderr: mksh: <stdin>[1]: setopt: not found |
| ash | 45 Unicode in IFS stdout: <> <> <x>stderr: ash: setopt: not found |
| osh | 45 Unicode in IFS [osh stdout] Expected '<>\n<x>\n', got '<>\n<>\n<x>\n' stdout: <> <> <x>stderr: setopt SH_WORD_SPLIT ^~~~~~ [ stdin ]:1: Command 'setopt' not found (OILS-ERR-100) |
| yash | 46 4 x 3 table: (default IFS, IFS='', IFS=zx) x ( $* "$*" $@ "$@" ) stdout: [' $* ', 'a', 'b', 'c', ''] [' "$*" ', 'a b c '] [' $@ ', 'a', 'b', 'c', ''] [' "$@" ', 'a b', 'c', ''] [' $* ', 'a b', 'c', ''] [' "$*" ', 'a bc'] [' $@ ', 'a b', 'c', ''] [' "$@" ', 'a b', 'c', ''] [' $* ', 'a b', 'c', ''] [' "$*" ', 'a bzcz'] [' $@ ', 'a b', 'c', ''] [' "$@" ', 'a b', 'c', '']stderr: yash: no such command `setopt' |
| yash | 47 4 x 3 table - with for loop stdout: stderr: |
| bash | 48 IFS=x and '' and $@ - same bug as spec/toysh-posix case #12 stdout: $* -one- -- -two- "$*" -one two- $@ -one- -- -two- "$@" -one- -- -two- [' $* ', 'one', '', 'two'] [' "$*" ', 'onezztwo'] [' $@ ', 'one', '', 'two'] [' "$@" ', 'one', '', 'two']stderr: bash: line 3: setopt: command not found |
| mksh | 48 IFS=x and '' and $@ - same bug as spec/toysh-posix case #12 stdout: $* -one- -- -two- "$*" -one two- $@ -one- -- -two- "$@" -one- -- -two- [' $* ', 'one', '', 'two'] [' "$*" ', 'onezztwo'] [' $@ ', 'one', '', 'two'] [' "$@" ', 'one', '', 'two']stderr: mksh: <stdin>[3]: setopt: not found |
| yash | 48 IFS=x and '' and $@ - same bug as spec/toysh-posix case #12 stdout: stderr: |
| bash | 49 IFS=x and '' and $@ (#2) stdout: ['=', '='] ['=', '='] ['=', '='] ['=', '='] ['=', '', '', '', '='] ['=', '', '', '', '=']stderr: bash: line 1: setopt: command not found |
| mksh | 49 IFS=x and '' and $@ (#2) stdout: ['=', '='] ['=', '='] ['=', '='] ['=', '='] ['=', '', '', '', '='] ['=', '', '', '', '=']stderr: mksh: <stdin>[1]: setopt: not found |
| yash | 49 IFS=x and '' and $@ (#2) stdout: ['=', '', '', '', '='] ['=', '', '', '', '='] ['=', '', '', '', '='] ['=', '', '', '', '='] ['=', '', '', '', '='] ['=', '', '', '', '=']stderr: yash: no such command `setopt' |
| bash | 50 IFS=x and '' and $@ (#3) stdout: ['', '', '', ''] ['', '', ''] ['', ''] [''] []stderr: bash: line 1: setopt: command not found |
| mksh | 50 IFS=x and '' and $@ (#3) stdout: ['', '', ''] [''] [] [] []stderr: mksh: <stdin>[1]: setopt: not found |
| yash | 50 IFS=x and '' and $@ (#3) stdout: ['', '', '', '', ''] ['', '', '', '', ''] ['', '', '', '', ''] ['', '', '', '', ''] ['', '', '', '', '']stderr: yash: no such command `setopt' |
| osh | 51 ""$A"" - empty string on both sides - derived from spec/toysh-posix #15 [osh stdout] Expected "['abc', 'def']\n['', 'abc', 'def', '']\n['abc', 'def']\n['', 'abc', 'def', '']\n\n=abc=\n=def=\n\n==\n=abc=\n=def=\n==\n\n=abc=\n=def=\n\n==\n=abc=\n=def=\n==\n" Got "['abc', 'def']\n['abc', 'def']\n['abc', 'def']\n['abc', 'def']\n\n=abc=\n=def=\n\n=abc=\n=def=\n\n=abc=\n=def=\n\n=abc=\n=def=\n" stdout: ['abc', 'def'] ['abc', 'def'] ['abc', 'def'] ['abc', 'def'] =abc= =def= =abc= =def= =abc= =def= =abc= =def=stderr: |