| status | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | |
| pass | 4 | 0 | 0 | 3 | 1 | 1 | 0 | 4 | 1 | 1 | |
| N-I | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | |
| BUG | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | |
| FAIL | 0 | 5 | 5 | 0 | 4 | 4 | 5 | 1 | 4 | 4 | |
| total | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | |
| case | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | description |
| 0 | pass | FAIL | FAIL | N-I | pass | pass | FAIL | pass | pass | pass | globstar is off -> ** is treated like * |
| details | details | details | details | ||||||||
| 1 | pass | FAIL | FAIL | BUG | FAIL | FAIL | FAIL | pass | FAIL | FAIL | each occurrence of ** recurses through all depths |
| details | details | details | details | details | details | details | details | ||||
| 2 | pass | FAIL | FAIL | pass | FAIL | FAIL | FAIL | pass | FAIL | FAIL | within braces, globstar works when there is a comma |
| details | details | details | details | details | details | details | |||||
| 3 | pass | FAIL | FAIL | pass | FAIL | FAIL | FAIL | pass | FAIL | FAIL | ** behaves like * if adjacent to anything other than / |
| details | details | details | details | details | details | details | |||||
| 4 | N-I | FAIL | FAIL | pass | FAIL | FAIL | FAIL | FAIL | FAIL | FAIL | in zsh, ***/ follows symlinked directories, while **/ does not |
| details | details | details | details | details | details | details | details | details |
15 passed, 0 OK, 2 not implemented, 1 BUG, 32 failed, 0 timeouts, 0 cases skipped 4 failed under osh
| dash | 0 globstar is off -> ** is treated like * [dash stdout] Expected 'c/leaf.md\n' Got '**/*.*\n' stdout: **/*.*stderr: dash: 3: shopt: not found
touch: cannot touch '{leaf.md,c/leaf.md,c/subdir/leaf.md}': No such file or directory
|
| ash | 0 globstar is off -> ** is treated like * [ash stdout] Expected 'c/leaf.md\n' Got '**/*.*\n' stdout: **/*.*stderr: ash: shopt: not found
touch: cannot touch '{leaf.md,c/leaf.md,c/subdir/leaf.md}': No such file or directory
|
| zsh | 0 globstar is off -> ** is treated like * stdout: stderr: |
| toysh | 0 globstar is off -> ** is treated like * [toysh stdout] Expected 'c/leaf.md\n' Got '' [toysh status] Expected 0 Got -6 stdout: stderr: munmap_chunk(): invalid pointer |
| dash | 1 each occurrence of ** recurses through all depths [dash stdout] Expected 'c/leaf.md\nc/subdir/leaf.md\nleaf.md\n\nc/leaf.md\nc/subdir/leaf.md\nleaf.md\n' Got '**/*.*\n\n**/**/*.*\n' stdout: **/*.* **/**/*.*stderr: dash: 1: shopt: not found
touch: cannot touch '{leaf.md,c/leaf.md,c/subdir/leaf.md}': No such file or directory
|
| ash | 1 each occurrence of ** recurses through all depths [ash stdout] Expected 'c/leaf.md\nc/subdir/leaf.md\nleaf.md\n\nc/leaf.md\nc/subdir/leaf.md\nleaf.md\n' Got '**/*.*\n\n**/**/*.*\n' stdout: **/*.* **/**/*.*stderr: ash: shopt: not found
touch: cannot touch '{leaf.md,c/leaf.md,c/subdir/leaf.md}': No such file or directory
|
| zsh | 1 each occurrence of ** recurses through all depths stdout: c/leaf.md c/subdir/leaf.md leaf.md c/leaf.md c/leaf.md c/subdir/leaf.md c/subdir/leaf.md c/subdir/leaf.md leaf.mdstderr: zsh: command not found: shopt |
| mksh | 1 each occurrence of ** recurses through all depths [mksh stdout] Expected 'c/leaf.md\nc/subdir/leaf.md\nleaf.md\n\nc/leaf.md\nc/subdir/leaf.md\nleaf.md\n' Got 'c/leaf.md\n\nc/subdir/leaf.md\n' stdout: c/leaf.md c/subdir/leaf.mdstderr: mksh: <stdin>[1]: shopt: not found |
| ksh | 1 each occurrence of ** recurses through all depths [ksh stdout] Expected 'c/leaf.md\nc/subdir/leaf.md\nleaf.md\n\nc/leaf.md\nc/subdir/leaf.md\nleaf.md\n' Got 'c/leaf.md\n\nc/subdir/leaf.md\n' stdout: c/leaf.md c/subdir/leaf.mdstderr: E: ksh: <stdin>[1]: shopt: inaccessible or not found |
| toysh | 1 each occurrence of ** recurses through all depths [toysh stdout] Expected 'c/leaf.md\nc/subdir/leaf.md\nleaf.md\n\nc/leaf.md\nc/subdir/leaf.md\nleaf.md\n' Got 'c/leaf.md\n\nc/subdir/leaf.md\n' stdout: c/leaf.md c/subdir/leaf.mdstderr: sh: shopt: No such file or directory |
| brush | 1 each occurrence of ** recurses through all depths [brush stdout] Expected 'c/leaf.md\nc/subdir/leaf.md\nleaf.md\n\nc/leaf.md\nc/subdir/leaf.md\nleaf.md\n' Got 'c/leaf.md\n\nc/subdir/leaf.md\n' stdout: c/leaf.md c/subdir/leaf.mdstderr: |
| osh | 1 each occurrence of ** recurses through all depths [osh stdout] Expected 'c/leaf.md\nc/subdir/leaf.md\nleaf.md\n\nc/leaf.md\nc/subdir/leaf.md\nleaf.md\n' Got 'c/leaf.md\n\nc/subdir/leaf.md\n' stdout: c/leaf.md c/subdir/leaf.mdstderr: shopt -s globstar ^~~~~ [ stdin ]:1: 'shopt' got invalid option 'globstar' |
| dash | 2 within braces, globstar works when there is a comma [dash stdout] Expected 'c/subdir/leaf.md\n' Got '{**/*.*,}\n' stdout: {**/*.*,}
stderr: dash: 1: shopt: not found |
| ash | 2 within braces, globstar works when there is a comma [ash stdout] Expected 'c/subdir/leaf.md\n' Got '{**/*.*,}\n' stdout: {**/*.*,}
stderr: ash: shopt: not found |
| mksh | 2 within braces, globstar works when there is a comma [mksh stdout] Expected 'c/subdir/leaf.md\n' Got '**/*.*\n' stdout: **/*.*stderr: mksh: <stdin>[1]: shopt: not found |
| ksh | 2 within braces, globstar works when there is a comma [ksh stdout] Expected 'c/subdir/leaf.md\n' Got '**/*.*\n' stdout: **/*.*stderr: E: ksh: <stdin>[1]: shopt: inaccessible or not found |
| toysh | 2 within braces, globstar works when there is a comma [toysh stdout] Expected 'c/subdir/leaf.md\n' Got '**/*.*\n' stdout: **/*.*stderr: sh: shopt: No such file or directory |
| brush | 2 within braces, globstar works when there is a comma [brush stdout] Expected 'c/subdir/leaf.md\n' Got '**/*.*\n' stdout: **/*.*stderr: |
| osh | 2 within braces, globstar works when there is a comma [osh stdout] Expected 'c/subdir/leaf.md\n' Got '**/*.*\n' stdout: **/*.*stderr: shopt -s globstar ^~~~~ [ stdin ]:1: 'shopt' got invalid option 'globstar' |
| dash | 3 ** behaves like * if adjacent to anything other than / [dash stdout] Expected 'directory/leaf.md leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' Got 'directory/leaf.md\ndirectory/**/*.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' stdout: directory/leaf.md directory/**/*.md directory/leaf.md directory/leaf.md directory/leaf.mdstderr: dash: 1: shopt: not found |
| ash | 3 ** behaves like * if adjacent to anything other than / [ash stdout] Expected 'directory/leaf.md leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' Got 'directory/leaf.md\ndirectory/**/*.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' stdout: directory/leaf.md directory/**/*.md directory/leaf.md directory/leaf.md directory/leaf.mdstderr: ash: shopt: not found |
| mksh | 3 ** behaves like * if adjacent to anything other than / [mksh stdout] Expected 'directory/leaf.md leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' Got 'directory/leaf.md\ndirectory/**/*.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' stdout: directory/leaf.md directory/**/*.md directory/leaf.md directory/leaf.md directory/leaf.mdstderr: mksh: <stdin>[1]: shopt: not found |
| ksh | 3 ** behaves like * if adjacent to anything other than / [ksh stdout] Expected 'directory/leaf.md leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' Got 'directory/leaf.md\ndirectory/**/*.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' stdout: directory/leaf.md directory/**/*.md directory/leaf.md directory/leaf.md directory/leaf.mdstderr: E: ksh: <stdin>[1]: shopt: inaccessible or not found |
| toysh | 3 ** behaves like * if adjacent to anything other than / [toysh stdout] Expected 'directory/leaf.md leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' Got 'directory/leaf.md\ndirectory/**/*.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' stdout: directory/leaf.md directory/**/*.md directory/leaf.md directory/leaf.md directory/leaf.mdstderr: sh: shopt: No such file or directory |
| brush | 3 ** behaves like * if adjacent to anything other than / [brush stdout] Expected 'directory/leaf.md leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' Got 'directory/leaf.md\ndirectory/**/*.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' stdout: directory/leaf.md directory/**/*.md directory/leaf.md directory/leaf.md directory/leaf.mdstderr: |
| osh | 3 ** behaves like * if adjacent to anything other than / [osh stdout] Expected 'directory/leaf.md leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' Got 'directory/leaf.md\ndirectory/**/*.md\ndirectory/leaf.md\ndirectory/leaf.md\ndirectory/leaf.md\n' stdout: directory/leaf.md directory/**/*.md directory/leaf.md directory/leaf.md directory/leaf.mdstderr: shopt -s globstar ^~~~~ [ stdin ]:1: 'shopt' got invalid option 'globstar' |
| bash | 4 in zsh, ***/ follows symlinked directories, while **/ does not stdout: stderr: |
| dash | 4 in zsh, ***/ follows symlinked directories, while **/ does not [dash stdout] Expected 'directory-2/leaf-2.md\ndirectory-1/symlink/leaf-2.md directory-2/leaf-2.md\n' Got 'directory-2/leaf-2.md\ndirectory-2/leaf-2.md\n' stdout: directory-2/leaf-2.md directory-2/leaf-2.mdstderr: |
| ash | 4 in zsh, ***/ follows symlinked directories, while **/ does not [ash stdout] Expected 'directory-2/leaf-2.md\ndirectory-1/symlink/leaf-2.md directory-2/leaf-2.md\n' Got 'directory-2/leaf-2.md\ndirectory-2/leaf-2.md\n' stdout: directory-2/leaf-2.md directory-2/leaf-2.mdstderr: |
| mksh | 4 in zsh, ***/ follows symlinked directories, while **/ does not [mksh stdout] Expected 'directory-2/leaf-2.md\ndirectory-1/symlink/leaf-2.md directory-2/leaf-2.md\n' Got 'directory-2/leaf-2.md\ndirectory-2/leaf-2.md\n' stdout: directory-2/leaf-2.md directory-2/leaf-2.mdstderr: |
| ksh | 4 in zsh, ***/ follows symlinked directories, while **/ does not [ksh stdout] Expected 'directory-2/leaf-2.md\ndirectory-1/symlink/leaf-2.md directory-2/leaf-2.md\n' Got 'directory-2/leaf-2.md\ndirectory-2/leaf-2.md\n' stdout: directory-2/leaf-2.md directory-2/leaf-2.mdstderr: |
| toysh | 4 in zsh, ***/ follows symlinked directories, while **/ does not [toysh stdout] Expected 'directory-2/leaf-2.md\ndirectory-1/symlink/leaf-2.md directory-2/leaf-2.md\n' Got '' [toysh status] Expected 0 Got -6 stdout: stderr: munmap_chunk(): invalid pointer |
| sush | 4 in zsh, ***/ follows symlinked directories, while **/ does not [sush stdout] Expected 'directory-2/leaf-2.md\ndirectory-1/symlink/leaf-2.md directory-2/leaf-2.md\n' Got 'directory-2/leaf-2.md\ndirectory-2/leaf-2.md\n' stdout: directory-2/leaf-2.md directory-2/leaf-2.mdstderr: |
| brush | 4 in zsh, ***/ follows symlinked directories, while **/ does not [brush stdout] Expected 'directory-2/leaf-2.md\ndirectory-1/symlink/leaf-2.md directory-2/leaf-2.md\n' Got 'directory-2/leaf-2.md\ndirectory-2/leaf-2.md\n' stdout: directory-2/leaf-2.md directory-2/leaf-2.mdstderr: |
| osh | 4 in zsh, ***/ follows symlinked directories, while **/ does not [osh stdout] Expected 'directory-2/leaf-2.md\ndirectory-1/symlink/leaf-2.md directory-2/leaf-2.md\n' Got 'directory-2/leaf-2.md\ndirectory-2/leaf-2.md\n' stdout: directory-2/leaf-2.md directory-2/leaf-2.mdstderr: |