Here is the total number of passing tests. TODO: we should also verify tests that do not pass.
Another view: index.html.
| name | osh py | osh cpp | delta | cpp num failed | cpp failures allowed |
| TOTAL | 2,478 | 2,472 | 6 | 0 | 0 |
| alias | 43 | 43 | 0 | 0 | 0 |
| append | 19 | 19 | 0 | 0 | 0 |
| arg-parse | 3 | 3 | 0 | 0 | 0 |
| arith | 71 | 71 | 0 | 0 | 0 |
| arith-context | 16 | 16 | 0 | 0 | 0 |
| arith-dynamic | 1 | 1 | 0 | 3 | 3 |
| array | 76 | 76 | 0 | 2 | 2 |
| array-assign | 1 | 1 | 0 | 9 | 9 |
| array-assoc | 38 | 38 | 0 | 2 | 2 |
| array-basic | 5 | 5 | 0 | 0 | 0 |
| array-compat | 7 | 7 | 0 | 2 | 2 |
| array-literal | 19 | 19 | 0 | 0 | 0 |
| array-sparse | 40 | 38 | 2 | 2 | 2 |
| assign | 47 | 47 | 0 | 0 | 0 |
| assign-deferred | 4 | 4 | 0 | 5 | 5 |
| assign-dialects | 1 | 1 | 0 | 3 | 3 |
| assign-extended | 36 | 36 | 0 | 1 | 1 |
| background | 24 | 24 | 0 | 3 | 3 |
| ble-features | 5 | 5 | 0 | 0 | 0 |
| ble-idioms | 21 | 21 | 0 | 5 | 5 |
| ble-unset | 3 | 3 | 0 | 0 | 0 |
| blog1 | 5 | 5 | 0 | 0 | 0 |
| blog2 | 8 | 8 | 0 | 0 | 0 |
| bool-parse | 7 | 7 | 0 | 1 | 1 |
| brace-expansion | 51 | 51 | 0 | 0 | 0 |
| bugs | 27 | 27 | 0 | 1 | 1 |
| builtin-bash | 9 | 9 | 0 | 4 | 4 |
| builtin-bind | 9 | 2 | 7 | 7 | 7 |
| builtin-bracket | 52 | 52 | 0 | 0 | 0 |
| builtin-cd | 27 | 27 | 0 | 3 | 3 |
| builtin-completion | 48 | 48 | 0 | 3 | 3 |
| builtin-dirs | 18 | 18 | 0 | 0 | 0 |
| builtin-echo | 27 | 27 | 0 | 0 | 0 |
| builtin-eval-source | 23 | 23 | 0 | 0 | 0 |
| builtin-fc | 12 | 12 | 0 | 2 | 2 |
| builtin-getopts | 28 | 28 | 0 | 3 | 3 |
| builtin-history | 7 | 9 | -2 | 7 | 7 |
| builtin-kill | 17 | 17 | 0 | 2 | 2 |
| builtin-meta | 18 | 18 | 0 | 0 | 0 |
| builtin-meta-assign | 11 | 11 | 0 | 0 | 0 |
| builtin-misc | 7 | 7 | 0 | 0 | 0 |
| builtin-printf | 48 | 48 | 0 | 1 | 1 |
| builtin-process | 24 | 24 | 0 | 2 | 2 |
| builtin-read | 62 | 62 | 0 | 1 | 1 |
| builtin-set | 23 | 23 | 0 | 0 | 0 |
| builtin-special | 10 | 10 | 0 | 0 | 0 |
| builtin-times | 1 | 1 | 0 | 0 | 0 |
| builtin-trap | 29 | 29 | 0 | 2 | 2 |
| builtin-trap-bash | 16 | 16 | 0 | 2 | 2 |
| builtin-trap-err | 20 | 20 | 0 | 2 | 2 |
| builtin-type | 6 | 6 | 0 | 0 | 0 |
| builtin-type-bash | 29 | 29 | 0 | 0 | 0 |
| builtin-umask | 19 | 19 | 0 | 4 | 4 |
| builtin-vars | 37 | 37 | 0 | 1 | 1 |
| case_ | 12 | 12 | 0 | 0 | 0 |
| command-parsing | 2 | 2 | 0 | 0 | 0 |
| command-sub | 30 | 30 | 0 | 0 | 0 |
| command-sub-ksh | 0 | 0 | 0 | 4 | 4 |
| command_ | 15 | 15 | 0 | 0 | 0 |
| comments | 2 | 2 | 0 | 0 | 0 |
| dbracket | 49 | 49 | 0 | 0 | 0 |
| divergence | 1 | 1 | 0 | 3 | 3 |
| dparen | 14 | 14 | 0 | 0 | 0 |
| empty-bodies | 3 | 3 | 0 | 0 | 0 |
| errexit | 35 | 35 | 0 | 0 | 0 |
| errexit-osh | 35 | 35 | 0 | 0 | 0 |
| exit-status | 11 | 11 | 0 | 0 | 0 |
| explore-parsing | 5 | 5 | 0 | 0 | 0 |
| extglob-files | 18 | 18 | 0 | 1 | 1 |
| extglob-match | 25 | 25 | 0 | 3 | 3 |
| fatal-errors | 5 | 5 | 0 | 0 | 0 |
| for-expr | 9 | 9 | 0 | 0 | 0 |
| func-parsing | 14 | 14 | 0 | 0 | 0 |
| glob | 36 | 36 | 0 | 3 | 3 |
| glob-bash | 7 | 7 | 0 | 0 | 0 |
| globignore | 18 | 18 | 0 | 0 | 0 |
| globstar | 1 | 1 | 0 | 4 | 4 |
| here-doc | 33 | 33 | 0 | 2 | 2 |
| if_ | 5 | 5 | 0 | 0 | 0 |
| interactive | 18 | 18 | 0 | 0 | 0 |
| introspect | 13 | 13 | 0 | 0 | 0 |
| known-differences | 2 | 2 | 0 | 0 | 0 |
| let | 0 | 0 | 0 | 0 | 0 |
| loop | 29 | 29 | 0 | 0 | 0 |
| nameref | 25 | 25 | 0 | 7 | 7 |
| nix-idioms | 5 | 5 | 0 | 0 | 0 |
| nocasematch-match | 6 | 6 | 0 | 0 | 0 |
| nul-bytes | 10 | 11 | -1 | 1 | 1 |
| osh-bugs | 4 | 4 | 0 | 0 | 0 |
| paren-ambiguity | 6 | 6 | 0 | 3 | 3 |
| parse-errors | 24 | 24 | 0 | 3 | 3 |
| pipeline | 24 | 24 | 0 | 1 | 1 |
| posix | 15 | 15 | 0 | 0 | 0 |
| print-source-code | 4 | 4 | 0 | 0 | 0 |
| process-sub | 9 | 9 | 0 | 0 | 0 |
| prompt | 25 | 25 | 0 | 8 | 8 |
| quote | 33 | 33 | 0 | 2 | 2 |
| redir-order | 5 | 5 | 0 | 0 | 0 |
| redirect | 38 | 38 | 0 | 2 | 2 |
| redirect-command | 23 | 23 | 0 | 0 | 0 |
| redirect-multi | 13 | 13 | 0 | 0 | 0 |
| regex | 37 | 37 | 0 | 0 | 0 |
| serialize | 7 | 7 | 0 | 0 | 0 |
| sh-func | 11 | 11 | 0 | 1 | 1 |
| sh-options | 37 | 37 | 0 | 1 | 1 |
| sh-options-bash | 6 | 6 | 0 | 2 | 2 |
| sh-usage | 23 | 23 | 0 | 0 | 0 |
| smoke | 18 | 18 | 0 | 0 | 0 |
| strict-options | 17 | 17 | 0 | 0 | 0 |
| subshell | 2 | 2 | 0 | 0 | 0 |
| temp-binding | 4 | 4 | 0 | 0 | 0 |
| tilde | 13 | 13 | 0 | 0 | 0 |
| toysh | 4 | 4 | 0 | 3 | 3 |
| toysh-posix | 19 | 19 | 0 | 2 | 2 |
| type-compat | 2 | 2 | 0 | 0 | 0 |
| unicode | 7 | 7 | 0 | 0 | 0 |
| var-num | 7 | 7 | 0 | 0 | 0 |
| var-op-bash | 18 | 18 | 0 | 7 | 7 |
| var-op-len | 8 | 8 | 0 | 1 | 1 |
| var-op-patsub | 26 | 26 | 0 | 2 | 2 |
| var-op-slice | 20 | 20 | 0 | 0 | 0 |
| var-op-strip | 29 | 29 | 0 | 0 | 0 |
| var-op-test | 34 | 34 | 0 | 0 | 0 |
| var-ref | 31 | 31 | 0 | 0 | 0 |
| var-sub | 6 | 6 | 0 | 0 | 0 |
| var-sub-quote | 41 | 41 | 0 | 0 | 0 |
| vars-bash | 0 | 0 | 0 | 1 | 1 |
| vars-special | 38 | 38 | 0 | 3 | 3 |
| whitespace | 3 | 3 | 0 | 0 | 0 |
| word-eval | 8 | 8 | 0 | 0 | 0 |
| word-split | 53 | 53 | 0 | 2 | 2 |
| xtrace | 15 | 15 | 0 | 1 | 1 |
| zsh-assoc | 0 | 0 | 0 | 0 | 0 |
| zsh-idioms | 3 | 3 | 0 | 0 | 0 |
Generated by test/spec-cpp.sh.