| status | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | |
| pass | 13 | 14 | 15 | 13 | 13 | 13 | 10 | 10 | 11 | 15 | |
| ok | 2 | 1 | 0 | 3 | 2 | 0 | 0 | 0 | 0 | 1 | |
| BUG | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |
| FAIL | 0 | 0 | 1 | 0 | 0 | 3 | 6 | 6 | 5 | 0 | |
| total | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | |
| case | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | description |
| 0 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Command block |
| 1 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | Permission denied |
| details | |||||||||||
| 2 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Not a dir |
| 3 | ok | ok | pass | pass | pass | pass | pass | pass | FAIL | pass | Name too long |
| details | details | details | |||||||||
| 4 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | External programs don't have _OVM in environment |
| 5 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | File with no shebang is executed |
| 6 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | File with relative path and no shebang is executed |
| 7 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | File in relative subdirectory and no shebang is executed |
| 8 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | $PATH lookup |
| 9 | pass | pass | pass | ok | pass | pass | FAIL | FAIL | pass | pass | filling $PATH cache, then insert the same command earlier in cache |
| details | details | details | |||||||||
| 10 | pass | pass | pass | ok | ok | FAIL | FAIL | FAIL | pass | pass | filling $PATH cache, then deleting command |
| details | details | details | details | details | |||||||
| 11 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Non-executable on $PATH |
| 12 | ok | pass | pass | ok | ok | FAIL | FAIL | FAIL | FAIL | pass | hash without args prints the cache |
| details | details | details | details | details | details | details | |||||
| 13 | pass | pass | pass | pass | BUG | FAIL | FAIL | FAIL | FAIL | pass | hash with args |
| details | details | details | details | details | |||||||
| 14 | BUG | BUG | FAIL | pass | pass | pass | FAIL | FAIL | FAIL | ok | hash -r doesn't allow additional args |
| details | details | details | details | details | details | details | |||||
| 15 | pass | pass | pass | pass | pass | pass | pass | FAIL | FAIL | pass | Executing command with same name as directory in PATH (#2429) |
| details | details |
127 passed, 9 OK, 0 not implemented, 3 BUG, 21 failed, 0 timeouts, 0 cases skipped
| toysh | 1 Permission denied [toysh status] Expected 126 Got 127 stdout: stderr: sh: /home/andy/git/oils-for-unix/oils/_tmp/spec-tmp/command_.test.sh/01-toysh/text-file: Permission denied |
| bash | 3 Name too long stdout: stderr: bash: line 1: ./0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789: File name too long |
| dash | 3 Name too long stdout: stderr: dash: 1: ./0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789: File name too long |
| brush | 3 Name too long [brush status] Expected 127 Got 126 stdout: stderr: [31merror:[39m failed to execute command './0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789': File name too long (os error 36) |
| zsh | 9 filling $PATH cache, then insert the same command earlier in cache stdout: two one onestderr: zsh: no matches found: one/* |
| toysh | 9 filling $PATH cache, then insert the same command earlier in cache [toysh stdout] Expected 'two\ntwo\none\n' Got 'two\none\none\n' stdout: two one onestderr: sh: hash: No such file or directory |
| sush | 9 filling $PATH cache, then insert the same command earlier in cache [sush stdout] Expected 'two\ntwo\none\n' Got 'two\none\none\n' stdout: two one onestderr: |
| zsh | 10 filling $PATH cache, then deleting command stdout: two status=0 one status=0stderr: |
| mksh | 10 filling $PATH cache, then deleting command stdout: two status=0 one status=0stderr: |
| ksh | 10 filling $PATH cache, then deleting command [ksh stdout] Expected 'two\nstatus=0\nstatus=127\n' Got 'two\nstatus=0\none\nstatus=0\n' stdout: two status=0 one status=0stderr: |
| toysh | 10 filling $PATH cache, then deleting command [toysh stdout] Expected 'two\nstatus=0\nstatus=127\n' Got 'two\nstatus=0\none\nstatus=0\n' stdout: two status=0 one status=0stderr: |
| sush | 10 filling $PATH cache, then deleting command [sush stdout] Expected 'two\nstatus=0\nstatus=127\n' Got 'two\nstatus=0\none\nstatus=0\n' stdout: two status=0 one status=0stderr: |
| bash | 12 hash without args prints the cache stdout: hits command 1 /usr/bin/whoami status=0stderr: |
| zsh | 12 hash without args prints the cache stdout: whoami=/usr/bin/whoami status=0stderr: |
| mksh | 12 hash without args prints the cache stdout: whoami=/usr/bin/whoami status=0stderr: |
| ksh | 12 hash without args prints the cache [ksh stdout] Expected '/usr/bin/whoami\nstatus=0\n' Got 'whoami=/usr/bin/whoami\nstatus=0\n' stdout: whoami=/usr/bin/whoami status=0stderr: |
| toysh | 12 hash without args prints the cache [toysh stdout] Expected '/usr/bin/whoami\nstatus=0\n' Got 'status=127\n' stdout: status=127stderr: sh: hash: No such file or directory |
| sush | 12 hash without args prints the cache [sush stdout] Expected '/usr/bin/whoami\nstatus=0\n' Got 'hits\tcommand\n 1\t/usr/bin/whoami\nstatus=0\n' stdout: hits command 1 /usr/bin/whoami status=0stderr: |
| brush | 12 hash without args prints the cache [brush stdout] Expected '/usr/bin/whoami\nstatus=0\n' Got 'status=0\n' stdout: status=0stderr: |
| mksh | 13 hash with args stdout: status=0 /whoami status=0stderr: |
| ksh | 13 hash with args [ksh stdout] Expected 'status=0\n/whoami\nstatus=1\n' Got 'status=0\n/whoami\nstatus=0\n' stdout: status=0 /whoami status=0stderr: |
| toysh | 13 hash with args [toysh stdout] Expected 'status=0\n/whoami\nstatus=1\n' Got 'status=127\nstatus=127\n' stdout: status=127 status=127stderr: sh: hash: No such file or directory sh: hash: No such file or directory sh: hash: No such file or directory |
| sush | 13 hash with args [sush stdout] Expected 'status=0\n/whoami\nstatus=1\n' Got 'status=0\nstatus=0\n' stdout: status=0 status=0stderr: |
| brush | 13 hash with args [brush stdout] Expected 'status=0\n/whoami\nstatus=1\n' Got 'status=0\nstatus=1\n' stdout: status=0 status=1stderr: _nonexistent_: not found |
| bash | 14 hash -r doesn't allow additional args stdout: status=0stderr: |
| dash | 14 hash -r doesn't allow additional args stdout: status=0stderr: |
| ash | 14 hash -r doesn't allow additional args [ash stdout] Expected 'status=1\n' Got 'status=0\n' stdout: status=0stderr: |
| toysh | 14 hash -r doesn't allow additional args [toysh stdout] Expected 'status=1\n' Got 'status=127\n' stdout: status=127stderr: sh: hash: No such file or directory |
| sush | 14 hash -r doesn't allow additional args [sush stdout] Expected 'status=1\n' Got 'status=0\n' stdout: status=0stderr: |
| brush | 14 hash -r doesn't allow additional args [brush stdout] Expected 'status=1\n' Got 'status=0\n' stdout: status=0stderr: |
| osh | 14 hash -r doesn't allow additional args stdout: status=2stderr: hash -r whoami >/dev/null # avoid weird output with mksh ^~~~ [ stdin ]:1: 'hash' got extra arguments after -r |
| sush | 15 Executing command with same name as directory in PATH (#2429) [sush stdout] Expected 'hi\nstatus=0\nhi\nstatus=0\nhi\nstatus=0\n' Got 'status=127\nstatus=127\nstatus=127\n' stdout: status=127 status=127 status=127stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 14: hello: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 19: hello: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 24: hello: command not found |
| brush | 15 Executing command with same name as directory in PATH (#2429) [brush stdout] Expected 'hi\nstatus=0\nhi\nstatus=0\nhi\nstatus=0\n' Got 'hi\nstatus=0\nstatus=126\nhi\nstatus=0\n' stdout: hi status=0 status=126 hi status=0stderr: [31merror:[39m failed to execute command 'hello': Permission denied (os error 13) |