serialize () { run-file serialize "$@" } run-file () { local spec_name=$1; shift; sh-spec spec/$spec_name.test.sh --compare-shells --oils-bin-dir $PWD/bin "$@" }
spec test index / oilshell.org
| status | bash | mksh | zsh | ash | osh | |
| pass | 7 | 4 | 3 | 0 | 7 | |
| ok | 3 | 3 | 4 | 2 | 3 | |
| N-I | 0 | 0 | 1 | 8 | 0 | |
| BUG | 0 | 3 | 2 | 0 | 0 | |
| total | 10 | 10 | 10 | 10 | 10 | |
| case | bash | mksh | zsh | ash | osh | description | 
| 0 | pass | ok | ok | N-I | pass | printf %q newline | 
| details | details | details | ||||
| 1 | ok | pass | ok | N-I | pass | printf %q spaces | 
| details | details | details | ||||
| 2 | pass | BUG | pass | N-I | ok | printf %q quotes | 
| details | details | details | ||||
| 3 | pass | BUG | pass | N-I | ok | printf %q unprintable | 
| details | details | details | ||||
| 4 | pass | pass | pass | N-I | ok | printf %q unicode | 
| details | details | |||||
| 5 | ok | BUG | ok | N-I | pass | printf %q invalid unicode | 
| details | details | details | details | |||
| 6 | pass | pass | BUG | ok | pass | set | 
| details | details | |||||
| 7 | pass | ok | BUG | N-I | pass | declare | 
| details | details | details | ||||
| 8 | pass | ok | N-I | N-I | pass | ${var@Q} | 
| details | details | details | ||||
| 9 | ok | pass | ok | ok | pass | xtrace | 
| details | details | details | 
21 passed, 15 OK, 9 not implemented, 5 BUG, 0 failed, 0 timeouts, 0 cases skipped
| mksh | 0 printf %q newline stdout: 'one'$'\n''two' roundtrip-okstderr:  | 
| zsh | 0 printf %q newline stdout: one$'\n'two roundtrip-okstderr:  | 
| ash | 0 printf %q newline stdout: stderr:  | 
| bash | 1 printf %q spaces stdout: one\ twostderr:  | 
| zsh | 1 printf %q spaces stdout: one\ twostderr:  | 
| ash | 1 printf %q spaces stdout: stderr:  | 
| mksh | 2 printf %q quotes stdout: ''\''"' roundtrip-okstderr:  | 
| ash | 2 printf %q quotes stdout: stderr:  | 
| osh | 2 printf %q quotes stdout: $'\'"' roundtrip-okstderr:  | 
| mksh | 3 printf %q unprintable stdout: ''$'\377'stderr:  | 
| ash | 3 printf %q unprintable stdout: stderr:  | 
| osh | 3 printf %q unprintable stdout: $'\xff'stderr:  | 
| ash | 4 printf %q unicode stdout: stderr:  | 
| osh | 4 printf %q unicode stdout: 'μ'stderr:  | 
| bash | 5 printf %q invalid unicode stdout: $'\316' $'\316μ' $'μ\316' $'\316a' $'a\316'stderr:  | 
| mksh | 5 printf %q invalid unicode stdout: ''$'\316' ''$'\316''μ' 'μ'$'\316'stderr:  | 
| zsh | 5 printf %q invalid unicode stdout: $'\316' $'\316'μ μ$'\316' $'\316'a a$'\316'stderr:  | 
| ash | 5 printf %q invalid unicode stdout: stderr:  | 
| zsh | 6 set stdout: stderr:  | 
| ash | 6 set stdout: zz='onestderr:  | 
| mksh | 7 declare stdout: typeset zz typeset zz=$'one\ntwo'stderr:  | 
| zsh | 7 declare stdout: stderr:  | 
| ash | 7 declare stdout: stderr:  | 
| mksh | 8 ${var@Q} stdout: $'one two μ' $'one two μ'stderr:  | 
| zsh | 8 ${var@Q} stdout: stderr:  | 
| ash | 8 ${var@Q} stdout: stderr:  | 
| bash | 9 xtrace stdout: one twostderr: + echo 'one two'  | 
| zsh | 9 xtrace stdout: one twostderr: +zsh:3> echo 'one two'  | 
| ash | 9 xtrace stdout: one twostderr: + echo 'one two'  |