status | bash | mksh | ksh | toysh | sush | brush | osh | |
pass | 29 | 22 | 26 | 1 | 23 | 28 | 25 | |
ok | 0 | 1 | 0 | 0 | 0 | 0 | 3 | |
N-I | 0 | 2 | 0 | 0 | 0 | 0 | 1 | |
BUG | 0 | 4 | 0 | 0 | 0 | 0 | 0 | |
FAIL | 0 | 0 | 3 | 28 | 6 | 1 | 0 | |
total | 29 | 29 | 29 | 29 | 29 | 29 | 29 | |
case | bash | mksh | ksh | toysh | sush | brush | osh | description |
0 | pass | pass | pass | FAIL | pass | pass | pass | @ matches exactly one |
details | ||||||||
1 | pass | pass | pass | FAIL | pass | pass | pass | @() with variable arms |
details | ||||||||
2 | pass | N-I | pass | FAIL | pass | pass | ok | extglob in variable |
details | details | details | ||||||
3 | pass | pass | pass | FAIL | FAIL | pass | pass | Matching literal '@(cc)' |
details | details | |||||||
4 | pass | BUG | pass | FAIL | pass | pass | pass | nested @() |
details | details | |||||||
5 | pass | pass | pass | FAIL | FAIL | pass | pass | nested @() with quotes and vars |
details | details | |||||||
6 | pass | pass | pass | FAIL | pass | pass | pass | ? matches 0 or 1 |
details | ||||||||
7 | pass | pass | pass | FAIL | pass | pass | pass | + matches 1 or more |
details | ||||||||
8 | pass | pass | pass | FAIL | pass | pass | pass | * matches 0 or more |
details | ||||||||
9 | pass | pass | pass | FAIL | pass | pass | pass | simple repetition with *(foo) and +(Foo) |
details | ||||||||
10 | pass | pass | pass | FAIL | pass | pass | pass | ! matches none |
details | ||||||||
11 | pass | pass | pass | FAIL | pass | pass | pass | match is anchored |
details | ||||||||
12 | pass | pass | pass | FAIL | pass | pass | pass | repeated match is anchored |
details | ||||||||
13 | pass | pass | pass | FAIL | pass | pass | pass | repetition with glob |
details | ||||||||
14 | pass | pass | pass | FAIL | pass | pass | pass | No brace expansion in == |
details | ||||||||
15 | pass | pass | pass | FAIL | pass | pass | pass | adjacent extglob |
details | ||||||||
16 | pass | pass | pass | FAIL | pass | pass | pass | nested extglob |
details | ||||||||
17 | pass | pass | pass | FAIL | pass | pass | pass | extglob empty string |
details | ||||||||
18 | pass | pass | pass | FAIL | pass | pass | pass | extglob empty pattern |
details | ||||||||
19 | pass | pass | pass | FAIL | FAIL | pass | pass | case with extglob |
details | details | |||||||
20 | pass | pass | pass | FAIL | FAIL | pass | pass | [[ $x == !($str) ]] |
details | details | |||||||
21 | pass | ok | FAIL | FAIL | FAIL | FAIL | ok | Turning extglob on changes the meaning of [[ !(str) ]] in bash |
details | details | details | details | details | details | |||
22 | pass | pass | pass | FAIL | FAIL | pass | pass | With extglob on, !($str) on the left or right of == has different meanings |
details | details | |||||||
23 | pass | BUG | FAIL | FAIL | pass | pass | ok | extglob inside arg word |
details | details | details | details | |||||
24 | pass | N-I | FAIL | pass | pass | pass | pass | extglob is not detected in regex! |
details | details | |||||||
25 | pass | BUG | pass | FAIL | pass | pass | pass | regular glob of single unicode char |
details | details | |||||||
26 | pass | BUG | pass | FAIL | pass | pass | pass | extended glob of single unicode char |
details | details | |||||||
27 | pass | pass | pass | FAIL | pass | pass | N-I | Extended glob in ${x//pat/replace} |
details | details | |||||||
28 | pass | pass | pass | FAIL | pass | pass | pass | Extended glob in ${x%PATTERN} |
details |
154 passed, 4 OK, 3 not implemented, 4 BUG, 38 failed, 0 timeouts, 0 cases skipped
toysh | 0 @ matches exactly one [toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n' stdout: FALSEstderr: sh: shopt: No such file or directory |
toysh | 1 @() with variable arms [toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n' stdout: FALSEstderr: sh: shopt: No such file or directory |
mksh | 2 extglob in variable stdout: FALSE FALSE FALSEstderr: mksh: <stdin>[1]: shopt: not found |
toysh | 2 extglob in variable [toysh stdout] Expected 'TRUE\nTRUE\nFALSE\nFALSE\nFALSE\n', got 'FALSE\nFALSE\nFALSE\n' stdout: FALSE FALSE FALSEstderr: sh: shopt: No such file or directory [[: too many arguments [[: too many arguments |
osh | 2 extglob in variable stdout: stderr: g=--@(help|verbose) ^~ [ stdin ]:3: fatal: extended glob not allowed in this word |
toysh | 3 Matching literal '@(cc)' [toysh stdout] Expected 'status=0\nstatus=1\nstatus=0\nstatus=1\n', got 'status=1\nstatus=1\nstatus=1\nstatus=1\n' stdout: status=1 status=1 status=1 status=1stderr: sh: shopt: No such file or directory |
sush | 3 Matching literal '@(cc)' [sush stdout] Expected 'status=0\nstatus=1\nstatus=0\nstatus=1\n', got 'status=0\nstatus=0\nstatus=0\nstatus=0\n' stdout: status=0 status=0 status=0 status=0stderr: |
mksh | 4 nested @() stdout: FALSEstderr: mksh: <stdin>[1]: shopt: not found |
toysh | 4 nested @() [toysh stdout] Expected 'TRUE\nTRUE\nTRUE\nFALSE\n', got 'FALSE\n' stdout: FALSEstderr: sh: shopt: No such file or directory |
toysh | 5 nested @() with quotes and vars [toysh stdout] Expected 'TRUE\n', got '' [toysh status] Expected 0, got 1 stdout: stderr: sh: shopt: No such file or directory |
sush | 5 nested @() with quotes and vars [sush stdout] Expected 'TRUE\n', got '' [sush status] Expected 0, got 1 stdout: stderr: |
toysh | 6 ? matches 0 or 1 [toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n' stdout: FALSEstderr: sh: shopt: No such file or directory |
toysh | 7 + matches 1 or more [toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n' stdout: FALSEstderr: sh: shopt: No such file or directory |
toysh | 8 * matches 0 or more [toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n' stdout: FALSEstderr: sh: shopt: No such file or directory |
toysh | 9 simple repetition with *(foo) and +(Foo) [toysh stdout] Expected 'TRUE\nTRUE\n', got '' [toysh status] Expected 0, got 1 stdout: stderr: sh: shopt: No such file or directory |
toysh | 10 ! matches none [toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n' stdout: FALSEstderr: sh: shopt: No such file or directory |
toysh | 11 match is anchored [toysh stdout] Expected 'FALSE\nFALSE\nTRUE\n', got 'FALSE\nFALSE\n' [toysh status] Expected 0, got 1 stdout: FALSE FALSEstderr: sh: shopt: No such file or directory |
toysh | 12 repeated match is anchored [toysh stdout] Expected 'FALSE\nFALSE\nTRUE\n', got 'FALSE\nFALSE\n' [toysh status] Expected 0, got 1 stdout: FALSE FALSEstderr: sh: shopt: No such file or directory |
toysh | 13 repetition with glob [toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n' stdout: FALSEstderr: sh: shopt: No such file or directory |
toysh | 14 No brace expansion in == [toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n' stdout: FALSEstderr: sh: shopt: No such file or directory [[: too many arguments |
toysh | 15 adjacent extglob [toysh stdout] Expected 'TRUE\nTRUE\n', got '' [toysh status] Expected 0, got 1 stdout: stderr: sh: shopt: No such file or directory |
toysh | 16 nested extglob [toysh stdout] Expected 'TRUE\nTRUE\nTRUE\nFALSE\n', got 'FALSE\n' stdout: FALSEstderr: sh: shopt: No such file or directory |
toysh | 17 extglob empty string [toysh stdout] Expected 'FALSE\nTRUE\n', got 'FALSE\n' [toysh status] Expected 0, got 1 stdout: FALSEstderr: sh: shopt: No such file or directory |
toysh | 18 extglob empty pattern [toysh stdout] Expected 'TRUE\nTRUE\nFALSE\nFALSE\n', got 'FALSE\nFALSE\n' stdout: FALSE FALSEstderr: sh: shopt: No such file or directory |
toysh | 19 case with extglob [toysh stdout] Expected 'A\nA\nU\nB\nC\nD\n', got 'U\n' [toysh status] Expected 0, got -6 stdout: Ustderr: sh: shopt: No such file or directory free(): invalid pointer |
sush | 19 case with extglob [sush stdout] Expected 'A\nA\nU\nB\nC\nD\n', got 'A\nU\nC\n' stdout: A U Cstderr: |
toysh | 20 [[ $x == !($str) ]] [toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n' stdout: FALSEstderr: sh: shopt: No such file or directory [[: too many arguments |
sush | 20 [[ $x == !($str) ]] [sush stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n' stdout: FALSEstderr: |
mksh | 21 Turning extglob on changes the meaning of [[ !(str) ]] in bash stdout: TRUE TRUE TRUEstderr: mksh: <stdin>[5]: shopt: not found |
ksh | 21 Turning extglob on changes the meaning of [[ !(str) ]] in bash [ksh stdout] Expected 'TRUE\nFALSE\nTRUE\nTRUE\n', got 'TRUE\nTRUE\nTRUE\n' stdout: TRUE TRUE TRUEstderr: E: ksh: <stdin>[5]: shopt: inaccessible or not found |
toysh | 21 Turning extglob on changes the meaning of [[ !(str) ]] in bash [toysh stdout] Expected 'TRUE\nFALSE\nTRUE\nTRUE\n', got 'TRUE\nTRUE\nTRUE\n' stdout: TRUE TRUE TRUEstderr: sh: shopt: No such file or directory |
sush | 21 Turning extglob on changes the meaning of [[ !(str) ]] in bash [sush stdout] Expected 'TRUE\nFALSE\nTRUE\nTRUE\n', got 'TRUE\nFALSE\nTRUE\n' [sush status] Expected 0, got 1 stdout: TRUE FALSE TRUEstderr: |
brush | 21 Turning extglob on changes the meaning of [[ !(str) ]] in bash [brush stdout] Expected 'TRUE\nFALSE\nTRUE\nTRUE\n', got 'TRUE\nTRUE\nTRUE\n' stdout: TRUE TRUE TRUEstderr: |
osh | 21 Turning extglob on changes the meaning of [[ !(str) ]] in bash stdout: stderr: [[ !($empty) ]] && echo TRUE # test if $empty is empty ^~ [ stdin ]:3: fatal: extended glob not allowed in this word |
toysh | 22 With extglob on, !($str) on the left or right of == has different meanings [toysh stdout] Expected 'TRUE\n', got '' [toysh status] Expected 0, got 1 stdout: stderr: sh: shopt: No such file or directory |
sush | 22 With extglob on, !($str) on the left or right of == has different meanings [sush stdout] Expected 'TRUE\n', got '' [sush status] Expected 0, got 2 stdout: stderr: |
mksh | 23 extglob inside arg word stdout: TRUE FALSEstderr: mksh: <stdin>[1]: shopt: not found |
ksh | 23 extglob inside arg word [ksh stdout] Expected 'TRUE\nTRUE\nFALSE\n', got 'TRUE\nFALSE\n' stdout: TRUE FALSEstderr: E: ksh: <stdin>[1]: shopt: inaccessible or not found |
toysh | 23 extglob inside arg word [toysh stdout] Expected 'TRUE\nTRUE\nFALSE\n', got 'FALSE\n' stdout: FALSEstderr: sh: shopt: No such file or directory |
osh | 23 extglob inside arg word stdout: TRUEstderr: [[ foo == ${unset:-@(foo|bar)} ]] && echo TRUE ^~ [ stdin ]:3: fatal: Extended glob not allowed in this word |
mksh | 24 extglob is not detected in regex! stdout: stderr: mksh: <stdin>[1]: shopt: not found mksh: <stdin>[2]: syntax error: '=~' unexpected operator/operand |
ksh | 24 extglob is not detected in regex! [ksh stdout] Expected 'FALSE\n', got '' [ksh status] Expected 0, got 1 stdout: stderr: E: ksh: <stdin>[1]: shopt: inaccessible or not found E: ksh: <stdin>[2]: syntax error: unexpected operator/operand '=~' |
mksh | 25 regular glob of single unicode char stdout: 0 1stderr: mksh: <stdin>[1]: shopt: not found |
toysh | 25 regular glob of single unicode char [toysh stdout] Expected '0\n0\n', got '1\n1\n' stdout: 1 1stderr: sh: shopt: No such file or directory |
mksh | 26 extended glob of single unicode char stdout: 0 1stderr: mksh: <stdin>[1]: shopt: not found |
toysh | 26 extended glob of single unicode char [toysh stdout] Expected '0\n0\n', got '1\n1\n' stdout: 1 1stderr: sh: shopt: No such file or directory |
toysh | 27 Extended glob in ${x//pat/replace} [toysh stdout] Expected 'foZ\n', got 'foo.py\n' stdout: foo.pystderr: sh: shopt: No such file or directory |
osh | 27 Extended glob in ${x//pat/replace} stdout: stderr: echo ${x//@(?.py)/Z} ^~ [ stdin ]:3: fatal: extended globs not supported in ${x//GLOB/} |
toysh | 28 Extended glob in ${x%PATTERN} [toysh stdout] Expected 'strip % foo\nstrip %% foo\nstrip # .py\nstrip ## .py\n' Got 'strip % foo.py\nstrip %% foo.py\nstrip # foo.py\nstrip ## foo.py\n' stdout: strip % foo.py strip %% foo.py strip # foo.py strip ## foo.pystderr: sh: shopt: No such file or directory |