| status | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | |
| pass | 40 | 35 | 37 | 30 | 38 | 38 | 13 | 37 | 25 | 41 | |
| ok | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |
| N-I | 0 | 4 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |
| BUG | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |
| FAIL | 0 | 0 | 4 | 11 | 0 | 3 | 28 | 4 | 16 | 0 | |
| total | 41 | 41 | 41 | 41 | 41 | 41 | 41 | 41 | 41 | 41 | |
| case | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | description |
| 0 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | "${empty:-}" |
| 1 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | ${empty:-} |
| 2 | pass | N-I | FAIL | pass | N-I | FAIL | FAIL | pass | pass | pass | array with empty values |
| details | details | details | details | details | |||||||
| 3 | pass | pass | pass | FAIL | pass | pass | pass | pass | FAIL | pass | substitution of IFS character, quoted and unquoted |
| details | details | ||||||||||
| 4 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | :- |
| 5 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | - |
| 6 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | Inner single quotes |
| details | |||||||||||
| 7 | pass | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | Inner single quotes, outer double quotes |
| details | |||||||||||
| 8 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | Inner double quotes |
| details | |||||||||||
| 9 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | Inner double quotes, outer double quotes |
| details | |||||||||||
| 10 | pass | pass | pass | FAIL | pass | pass | pass | pass | pass | pass | Multiple words: no quotes |
| details | |||||||||||
| 11 | pass | pass | pass | pass | pass | pass | FAIL | pass | FAIL | pass | Multiple words: no outer quotes, inner single quotes |
| details | details | ||||||||||
| 12 | pass | pass | pass | pass | pass | pass | FAIL | pass | FAIL | pass | Multiple words: no outer quotes, inner double quotes |
| details | details | ||||||||||
| 13 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Multiple words: outer double quotes, no inner quotes |
| 14 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | Multiple words: outer double quotes, inner double quotes |
| details | |||||||||||
| 15 | pass | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | Multiple words: outer double quotes, inner single quotes |
| details | |||||||||||
| 16 | pass | pass | pass | FAIL | pass | pass | FAIL | pass | FAIL | pass | Mixed inner quotes |
| details | details | details | |||||||||
| 17 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | Mixed inner quotes with outer quotes |
| details | |||||||||||
| 18 | pass | pass | pass | FAIL | pass | pass | FAIL | pass | FAIL | pass | part_value tree with multiple words |
| details | details | details | |||||||||
| 19 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | part_value tree on RHS |
| details | |||||||||||
| 20 | pass | pass | pass | FAIL | pass | pass | FAIL | pass | pass | pass | Var with multiple words: no quotes |
| details | details | ||||||||||
| 21 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | Multiple words: no outer quotes, inner single quotes |
| details | |||||||||||
| 22 | pass | pass | pass | pass | pass | pass | FAIL | pass | FAIL | pass | Multiple words: no outer quotes, inner double quotes |
| details | details | ||||||||||
| 23 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | Multiple words: outer double quotes, no inner quotes |
| details | |||||||||||
| 24 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | Multiple words: outer double quotes, inner double quotes |
| details | |||||||||||
| 25 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | FAIL | pass | Multiple words: outer double quotes, inner single quotes |
| details | details | details | |||||||||
| 26 | pass | pass | pass | FAIL | pass | pass | FAIL | pass | FAIL | pass | No outer quotes, Multiple internal quotes |
| details | details | details | |||||||||
| 27 | pass | pass | pass | FAIL | pass | pass | pass | pass | pass | pass | Strip a string with single quotes, unquoted |
| details | |||||||||||
| 28 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Strip a string with single quotes, double quoted |
| 29 | pass | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | The string to strip is space sensitive |
| details | |||||||||||
| 30 | pass | pass | pass | FAIL | pass | pass | FAIL | pass | pass | pass | The string to strip can be single quoted, outer is unquoted |
| details | details | ||||||||||
| 31 | pass | pass | pass | FAIL | ok | FAIL | pass | FAIL | pass | pass | Syntax error for single quote in double quote |
| details | details | details | details | ||||||||
| 32 | pass | ok | pass | FAIL | pass | pass | FAIL | pass | FAIL | pass | "${undef-'c d'}" and "${foo%'c d'}" are parsed differently |
| details | details | details | details | ||||||||
| 33 | pass | N-I | pass | pass | pass | pass | FAIL | pass | pass | pass | $'' allowed within VarSub arguments |
| details | details | ||||||||||
| 34 | pass | pass | FAIL | pass | pass | pass | FAIL | pass | pass | pass | # operator with single quoted arg (dash/ash and bash/mksh disagree, reported by Crestwave) |
| details | details | ||||||||||
| 35 | pass | N-I | FAIL | pass | pass | pass | FAIL | pass | pass | pass | / operator with single quoted arg (causes syntax error in regex in OSH, reported by Crestwave) |
| details | details | details | |||||||||
| 36 | pass | N-I | FAIL | pass | pass | pass | FAIL | FAIL | FAIL | pass | single quotes work inside character classes |
| details | details | details | details | details | |||||||
| 37 | pass | pass | pass | pass | pass | pass | FAIL | pass | FAIL | pass | comparison: :- operator with single quoted arg |
| details | details | ||||||||||
| 38 | BUG | pass | pass | pass | pass | pass | FAIL | FAIL | FAIL | pass | Right Brace as argument (similar to #702) |
| details | details | details | details | ||||||||
| 39 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | Var substitution with newlines (#2492) |
| details | |||||||||||
| 40 | pass | BUG | pass | FAIL | BUG | FAIL | FAIL | pass | FAIL | pass | Var substitution with \n in value |
| details | details | details | details | details | details |
334 passed, 2 OK, 5 not implemented, 3 BUG, 66 failed, 0 timeouts, 0 cases skipped
| dash | 2 array with empty values stdout: stderr: dash: 1: Syntax error: "(" unexpected
|
| ash | 2 array with empty values [ash stdout] Expected "['', 'x', '', '']\n" Got '' [ash status] Expected 0 Got 2 stdout: stderr: ash: syntax error: unexpected "("
|
| mksh | 2 array with empty values stdout: stderr: mksh: <stdin>[1]: syntax error: '(' unexpected
|
| ksh | 2 array with empty values [ksh stdout] Expected "['', 'x', '', '']\n" Got '' [ksh status] Expected 0 Got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unexpected '('
|
| toysh | 2 array with empty values [toysh stdout] Expected "['', 'x', '', '']\n" Got '' [toysh status] Expected 0 Got 2 stdout: stderr: main: line 1: sh: syntax error: ) |
| zsh | 3 substitution of IFS character, quoted and unquoted [zsh stdout] Expected "['']\n[':']\n" Got "[':']\n[':']\n" stdout: [':'] [':']stderr: |
| brush | 3 substitution of IFS character, quoted and unquoted [brush stdout] Expected "['']\n[':']\n" Got "[]\n[':']\n" stdout: [] [':']stderr: |
| toysh | 6 Inner single quotes [toysh stdout] Expected "['b']\n" Got '["\'b\'"]\n' stdout: ["'b'"]stderr: |
| brush | 7 Inner single quotes, outer double quotes [brush stdout] Expected '["\'b\'"]\n' Got "['b']\n" stdout: ['b']stderr: |
| toysh | 8 Inner double quotes [toysh stdout] Expected "['b']\n" Got '[\'"b"\']\n' stdout: ['"b"']stderr: |
| toysh | 9 Inner double quotes, outer double quotes [toysh stdout] Expected "['b']\n" Got '[\'"b"\']\n' stdout: ['"b"']stderr: |
| zsh | 10 Multiple words: no quotes [zsh stdout] Expected "['a', 'b', 'c']\n" Got "['a b c']\n" stdout: ['a b c']stderr: |
| toysh | 11 Multiple words: no outer quotes, inner single quotes [toysh stdout] Expected "['a b c']\n" Got '["\'a", \'b\', "c\'"]\n' stdout: ["'a", 'b', "c'"]stderr: |
| brush | 11 Multiple words: no outer quotes, inner single quotes [brush stdout] Expected "['a b c']\n" Got "['a', 'b', 'c']\n" stdout: ['a', 'b', 'c']stderr: |
| toysh | 12 Multiple words: no outer quotes, inner double quotes [toysh stdout] Expected "['a b c']\n" Got '[\'"a\', \'b\', \'c"\']\n' stdout: ['"a', 'b', 'c"']stderr: |
| brush | 12 Multiple words: no outer quotes, inner double quotes [brush stdout] Expected "['a b c']\n" Got "['a', 'b', 'c']\n" stdout: ['a', 'b', 'c']stderr: |
| toysh | 14 Multiple words: outer double quotes, inner double quotes [toysh stdout] Expected "['a b c']\n" Got '[\'"a b c"\']\n' stdout: ['"a b c"']stderr: |
| brush | 15 Multiple words: outer double quotes, inner single quotes [brush stdout] Expected '["\'a b c\'"]\n' Got "['a b c']\n" stdout: ['a b c']stderr: |
| zsh | 16 Mixed inner quotes [zsh stdout] Expected "['a b', 'c']\n" Got "['a b c']\n" stdout: ['a b c']stderr: |
| toysh | 16 Mixed inner quotes [toysh stdout] Expected "['a b', 'c']\n" Got '[\'"a\', \'b"\', \'c\']\n' stdout: ['"a', 'b"', 'c']stderr: |
| brush | 16 Mixed inner quotes [brush stdout] Expected "['a b', 'c']\n" Got "['a', 'b', 'c']\n" stdout: ['a', 'b', 'c']stderr: |
| toysh | 17 Mixed inner quotes with outer quotes [toysh stdout] Expected "['a b c']\n" Got '[\'"a b" c\']\n' stdout: ['"a b" c']stderr: |
| zsh | 18 part_value tree with multiple words [zsh stdout] Expected "['1 2', '3 45', '6 7']\n" Got "['1 2 3 45 6 7']\n" stdout: ['1 2 3 45 6 7']stderr: |
| toysh | 18 part_value tree with multiple words [toysh stdout] Expected "['1 2', '3 45', '6 7']\n" Got '[\'${a:-"1\', \'2"\', \'"3\', \'4"5 6 7}\']\n' stdout: ['${a:-"1', '2"', '"3', '4"5 6 7}']
stderr: |
| brush | 18 part_value tree with multiple words [brush stdout] Expected "['1 2', '3 45', '6 7']\n" Got "['1', '2', '3', '45', '6', '7']\n" stdout: ['1', '2', '3', '45', '6', '7']stderr: |
| toysh | 19 part_value tree on RHS [toysh stdout] Expected "['1 2 3 45 6 7']\n" Got '[\'${a:-"1 2" "3 4"5 6 7}\']\n' stdout: ['${a:-"1 2" "3 4"5 6 7}']
stderr: |
| zsh | 20 Var with multiple words: no quotes [zsh stdout] Expected "['a', 'b', 'c']\n" Got "['a b c']\n" stdout: ['a b c']stderr: |
| toysh | 20 Var with multiple words: no quotes [toysh stdout] Expected "['a', 'b', 'c']\n" Got "['$var']\n" stdout: ['$var']stderr: |
| toysh | 21 Multiple words: no outer quotes, inner single quotes [toysh stdout] Expected "['$var']\n" Got '["\'$var\'"]\n' stdout: ["'$var'"]stderr: |
| toysh | 22 Multiple words: no outer quotes, inner double quotes [toysh stdout] Expected "['a b c']\n" Got '[\'"$var"\']\n' stdout: ['"$var"']stderr: |
| brush | 22 Multiple words: no outer quotes, inner double quotes [brush stdout] Expected "['a b c']\n" Got "['a', 'b', 'c']\n" stdout: ['a', 'b', 'c']stderr: |
| toysh | 23 Multiple words: outer double quotes, no inner quotes [toysh stdout] Expected "['a b c']\n" Got "['$var']\n" stdout: ['$var']stderr: |
| toysh | 24 Multiple words: outer double quotes, inner double quotes [toysh stdout] Expected "['a b c']\n" Got '[\'"$var"\']\n' stdout: ['"$var"']stderr: |
| toysh | 25 Multiple words: outer double quotes, inner single quotes [toysh stdout] Expected '["\'a b c\'"]\n' Got '["\'$var\'"]\n' stdout: ["'$var'"]stderr: |
| sush | 25 Multiple words: outer double quotes, inner single quotes [sush stdout] Expected '["\'a b c\'"]\n' Got '["\'$var\'"]\n' stdout: ["'$var'"]stderr: |
| brush | 25 Multiple words: outer double quotes, inner single quotes [brush stdout] Expected '["\'a b c\'"]\n' Got "['$var']\n" stdout: ['$var']stderr: |
| zsh | 26 No outer quotes, Multiple internal quotes [zsh stdout] Expected "['Aa', 'b', 'c', ' a b cD', 'E', 'F']\n" Got "['Aa b c a b cD E F']\n" stdout: ['Aa b c a b cD E F']stderr: |
| toysh | 26 No outer quotes, Multiple internal quotes [toysh stdout] Expected "['Aa', 'b', 'c', ' a b cD', 'E', 'F']\n" Got '[\'A$var\', \'"\', \'$var"D\', \'E\', \'F\']\n' stdout: ['A$var', '"', '$var"D', 'E', 'F']stderr: |
| brush | 26 No outer quotes, Multiple internal quotes [brush stdout] Expected "['Aa', 'b', 'c', ' a b cD', 'E', 'F']\n" Got "['Aa', 'b', 'c', 'a', 'b', 'cD', 'E', 'F']\n" stdout: ['Aa', 'b', 'c', 'a', 'b', 'cD', 'E', 'F']stderr: |
| zsh | 27 Strip a string with single quotes, unquoted [zsh stdout] Expected '["\'a", \'b\', \'c\']\n' Got '["\'a b c "]\n' stdout: ["'a b c "]stderr: |
| brush | 29 The string to strip is space sensitive [brush stdout] Expected "['a b ', 'a b c d']\n" Got "['a b ', 'a b ']\n" stdout: ['a b ', 'a b ']stderr: |
| zsh | 30 The string to strip can be single quoted, outer is unquoted [zsh stdout] Expected "['a', 'b', 'a', 'b', 'c', 'd']\n" Got "['a b ', 'a b c d']\n" stdout: ['a b ', 'a b c d']stderr: |
| toysh | 30 The string to strip can be single quoted, outer is unquoted [toysh stdout] Expected "['a', 'b', 'a', 'b', 'c', 'd']\n" Got "['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd']\n" stdout: ['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd']stderr: |
| zsh | 31 Syntax error for single quote in double quote [zsh stdout] Expected u'' Got '["\'a b c "]\n' [zsh status] Expected 2 Got 0 stdout: ["'a b c "]stderr: |
| mksh | 31 Syntax error for single quote in double quote stdout: stderr: mksh: <stdin>[3]: no closing quote |
| ksh | 31 Syntax error for single quote in double quote [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[3]: no closing quote |
| sush | 31 Syntax error for single quote in double quote [sush stdout] Expected u'' Got '["\'a b c "]\n' [sush status] Expected 2 Got 0 stdout: ["'a b c "]stderr: |
| dash | 32 "${undef-'c d'}" and "${foo%'c d'}" are parsed differently stdout: ["'c d'", "'c d'"] ['c d', 'c d'] --- ['a b ', 'a b c d']stderr: |
| zsh | 32 "${undef-'c d'}" and "${foo%'c d'}" are parsed differently [zsh stdout] Expected '["\'c d\'", "\'c d\'"]\n[\'c d\', \'c d\']\n---\n[\'a b \', \'a b c d\']\n[\'a b zzz\', \'a b c d\']\n[\'a b zzz\', \'a b c d\']\n' Got '["\'c d\'", "\'c d\'"]\n[\'c d\', \'c d\']\n---\n[\'a b \', \'a b c d\']\n[\'a b zzz\', \'a b c d\']\n["a b \'zzz\'", \'a b c d\']\n' stdout: ["'c d'", "'c d'"] ['c d', 'c d'] --- ['a b ', 'a b c d'] ['a b zzz', 'a b c d'] ["a b 'zzz'", 'a b c d']stderr: |
| toysh | 32 "${undef-'c d'}" and "${foo%'c d'}" are parsed differently [toysh stdout] Expected '["\'c d\'", "\'c d\'"]\n[\'c d\', \'c d\']\n---\n[\'a b \', \'a b c d\']\n[\'a b zzz\', \'a b c d\']\n[\'a b zzz\', \'a b c d\']\n' Got '["\'c d\'", "\'c d\'"]\n["\'c", "d\'", "\'c", "d\'"]\n---\n[\'a b c d\', \'a b c d\']\n' [toysh status] Expected 0 Got -6 stdout: ["'c d'", "'c d'"] ["'c", "d'", "'c", "d'"] --- ['a b c d', 'a b c d']stderr: munmap_chunk(): invalid pointer |
| brush | 32 "${undef-'c d'}" and "${foo%'c d'}" are parsed differently [brush stdout] Expected '["\'c d\'", "\'c d\'"]\n[\'c d\', \'c d\']\n---\n[\'a b \', \'a b c d\']\n[\'a b zzz\', \'a b c d\']\n[\'a b zzz\', \'a b c d\']\n' Got "['c d', 'c d']\n['c', 'd', 'c', 'd']\n---\n['a b ', 'a b c d']\n['a b zzz', 'a b c d']\n['a b zzz', 'a b c d']\n" stdout: ['c d', 'c d'] ['c', 'd', 'c', 'd'] --- ['a b ', 'a b c d'] ['a b zzz', 'a b c d'] ['a b zzz', 'a b c d']stderr: |
| dash | 33 $'' allowed within VarSub arguments stdout: abc abcstderr: |
| toysh | 33 $'' allowed within VarSub arguments [toysh stdout] Expected 'a\na\n' Got 'abc\nabc\n' stdout: abc abcstderr: |
| ash | 34 # operator with single quoted arg (dash/ash and bash/mksh disagree, reported by Crestwave) [ash stdout] Expected "--\n-a-\n-'a'-\n--\n" Got "--\n--\n-'a'-\n-'a'-\n" stdout: -- -- -'a'- -'a'-stderr: |
| toysh | 34 # operator with single quoted arg (dash/ash and bash/mksh disagree, reported by Crestwave) [toysh stdout] Expected "--\n--\n-'a'-\n-'a'-\n" Got '-a-\n-a-\n\n\n' stdout: -a- -a-stderr: |
| dash | 35 / operator with single quoted arg (causes syntax error in regex in OSH, reported by Crestwave) stdout: stderr: dash: 2: Bad substitution |
| ash | 35 / operator with single quoted arg (causes syntax error in regex in OSH, reported by Crestwave) [ash stdout] Expected "no plus or minus ''''\nno plus or minus ++--++--\n" Got "no plus or minus ''''\nno plus or minus ''''\n" stdout: no plus or minus '''' no plus or minus ''''stderr: |
| toysh | 35 / operator with single quoted arg (causes syntax error in regex in OSH, reported by Crestwave) [toysh stdout] Expected "no plus or minus ''''\nno plus or minus ''''\n" Got "no plus or minus ++--''++--''\nno plus or minus ++--''++--''\n" stdout: no plus or minus ++--''++--'' no plus or minus ++--''++--''stderr: |
| dash | 36 single quotes work inside character classes stdout: stderr: dash: 2: Bad substitution |
| ash | 36 single quotes work inside character classes [ash stdout] Expected 'a[[[---]]]b\n' Got 'a---b\n' stdout: a---bstderr: |
| toysh | 36 single quotes work inside character classes [toysh stdout] Expected 'a---b\n' Got 'a[[[---]]]b\n' stdout: a[[[---]]]bstderr: |
| sush | 36 single quotes work inside character classes [sush stdout] Expected 'a---b\n' Got 'a[[[---]]]b\n' stdout: a[[[---]]]bstderr: |
| brush | 36 single quotes work inside character classes [brush stdout] Expected 'a---b\n' Got '' [brush status] Expected 0 Got 1 stdout: stderr: [31merror:[39m invalid regex: Parsing error at position 14: Invalid character class; expression: '(?ms)[\\\[\]\]' |
| toysh | 37 comparison: :- operator with single quoted arg [toysh stdout] Expected "a\n'a'\n" Got "'a'\n'a'\n" stdout: 'a' 'a'stderr: |
| brush | 37 comparison: :- operator with single quoted arg [brush stdout] Expected "a\n'a'\n" Got 'a\na\n' stdout: a astderr: |
| bash | 38 Right Brace as argument (similar to #702) stdout: } } '}' }stderr: |
| toysh | 38 Right Brace as argument (similar to #702) [toysh stdout] Expected "}\n}\n''}\n}\n" Got '}\n}\n\'\'}\n"}\n' stdout: } } ''} "}stderr: |
| sush | 38 Right Brace as argument (similar to #702) [sush stdout] Expected "}\n}\n''}\n}\n" Got "}\n\\}\n'}'\n}\n" stdout: } \} '}' }stderr: |
| brush | 38 Right Brace as argument (similar to #702) [brush stdout] Expected "}\n}\n''}\n}\n" Got '}\n}\n}\n}\n' stdout: } } } }stderr: |
| toysh | 39 Var substitution with newlines (#2492) [toysh stdout] Expected 'a b\na\nb\nc d\nc\nd\ne f\ne\nf\n' Got 'a \nb\na\nb\nc \nd\nc\nd\ne \nf\ne\nf\n' stdout: a b a b c d c d e f e fstderr: |
| dash | 40 Var substitution with \n in value stdout: a b c d e fstderr: |
| zsh | 40 Var substitution with \n in value [zsh stdout] Expected 'a\\nb\nc\\nd\ne\\nf\n' Got 'a\nb\nc\nd\ne\nf\n' stdout: a b c d e fstderr: |
| mksh | 40 Var substitution with \n in value stdout: a b c d e fstderr: |
| ksh | 40 Var substitution with \n in value [ksh stdout] Expected 'a\\nb\nc\\nd\ne\\nf\n' Got 'a\nb\nc\nd\ne\nf\n' stdout: a b c d e fstderr: |
| toysh | 40 Var substitution with \n in value [toysh stdout] Expected 'a\\nb\nc\\nd\ne\\nf\n' Got 'anb\ncnd\nenf\n' stdout: anb cnd enfstderr: |
| brush | 40 Var substitution with \n in value [brush stdout] Expected 'a\\nb\nc\\nd\ne\\nf\n' Got 'anb\ncnd\nenf\n' stdout: anb cnd enfstderr: |