spec test index / oilshell.org
status | dash | bash | mksh | zsh | osh | osh_ALT | |
pass | 16 | 36 | 20 | 25 | 33 | 33 | |
ok | 0 | 0 | 1 | 3 | 1 | 1 | |
N-I | 19 | 0 | 13 | 4 | 0 | 0 | |
BUG | 1 | 0 | 2 | 4 | 0 | 0 | |
FAIL | 0 | 0 | 0 | 0 | 2 | 2 | |
total | 36 | 36 | 36 | 36 | 36 | 36 | |
case | dash | bash | mksh | zsh | osh | osh_ALT | description |
0 | pass | pass | pass | pass | pass | pass | $PWD is set |
1 | pass | pass | BUG | pass | pass | pass | $PWD is not only set, but exported |
details | |||||||
2 | pass | pass | pass | pass | pass | pass | $PATH is set if unset at startup |
3 | pass | pass | pass | BUG | pass | pass | $HOME is NOT set |
details | |||||||
4 | pass | pass | pass | BUG | pass | pass | $1 .. $9 are scoped, while $0 is not |
details | |||||||
5 | pass | pass | pass | pass | pass | pass | $? |
6 | pass | pass | pass | pass | pass | pass | $# |
7 | pass | pass | pass | pass | pass | pass | $$ looks like a PID |
8 | pass | pass | pass | pass | pass | pass | $$ doesn't change with subshell or command sub |
9 | N-I | pass | pass | N-I | pass | pass | $BASHPID DOES change with subshell and command sub |
details | details | ||||||
10 | pass | pass | pass | pass | pass | pass | Background PID $! looks like a PID |
11 | pass | pass | pass | pass | pass | pass | $PPID |
12 | N-I | pass | pass | N-I | pass | pass | $PIPESTATUS |
details | details | ||||||
13 | N-I | pass | pass | pass | FAIL | FAIL | $RANDOM |
details | details | details | |||||
14 | N-I | pass | N-I | pass | pass | pass | $UID and $EUID |
details | details | ||||||
15 | N-I | pass | N-I | pass | pass | pass | $OSTYPE is non-empty |
details | details | ||||||
16 | N-I | pass | N-I | N-I | pass | pass | $HOSTNAME |
details | details | details | |||||
17 | BUG | pass | pass | BUG | pass | pass | $LINENO is the current line, not line of function call |
details | details | ||||||
18 | pass | pass | pass | BUG | pass | pass | $LINENO in "bare" redirect arg (bug regression) |
details | |||||||
19 | pass | pass | pass | pass | pass | pass | $LINENO in redirect arg (bug regression) |
20 | N-I | pass | N-I | pass | pass | pass | $LINENO in [[ |
details | details | ||||||
21 | N-I | pass | pass | pass | pass | pass | $LINENO in (( |
details | |||||||
22 | pass | pass | ok | pass | pass | pass | $LINENO in for loop |
details | |||||||
23 | pass | pass | pass | pass | pass | pass | $LINENO in other for loops |
24 | N-I | pass | BUG | pass | FAIL | FAIL | $LINENO in for (( loop |
details | details | details | details | ||||
25 | pass | pass | pass | pass | pass | pass | $LINENO for assignment |
26 | N-I | pass | N-I | pass | pass | pass | $_ with simple command and evaluation |
details | details | ||||||
27 | N-I | pass | N-I | pass | pass | pass | $_ and ${_} |
details | details | ||||||
28 | N-I | pass | N-I | pass | pass | pass | $_ with word splitting |
details | details | ||||||
29 | N-I | pass | N-I | ok | pass | pass | $_ with pipeline and subshell |
details | details | details | |||||
30 | N-I | pass | N-I | pass | pass | pass | $_ with && and || |
details | details | ||||||
31 | N-I | pass | N-I | pass | pass | pass | $_ is not reset with (( and [[ |
details | details | ||||||
32 | N-I | pass | N-I | ok | ok | ok | $_ with assignments, arrays, etc. |
details | details | details | details | details | |||
33 | N-I | pass | N-I | ok | pass | pass | $_ with loop |
details | details | details | |||||
34 | N-I | pass | pass | pass | pass | pass | $_ is not undefined on first use |
details | |||||||
35 | N-I | pass | N-I | N-I | pass | pass | BASH_VERSION / OIL_VERSION |
details | details | details |
163 passed, 6 OK, 36 not implemented, 7 BUG, 2 failed, 0 timeouts, 0 cases skipped 2 failed under osh
mksh | 1 $PWD is not only set, but exported stdout: stderr: |
zsh | 3 $HOME is NOT set stdout: zsh sets HOMEstderr: |
zsh | 4 $1 .. $9 are scoped, while $0 is not stdout: fun a bstderr: |
dash | 9 $BASHPID DOES change with subshell and command sub stdout: stderr: empty BASHPID in parent |
zsh | 9 $BASHPID DOES change with subshell and command sub stdout: stderr: empty BASHPID in parent |
dash | 12 $PIPESTATUS stdout: stderr: dash: 2: Bad substitution |
zsh | 12 $PIPESTATUS stdout: ['']stderr: |
dash | 13 $RANDOM stdout: 0stderr: |
osh | 13 $RANDOM [osh status] Expected 0, got 1 stdout: 0stderr: |
osh_ALT | 13 $RANDOM [osh_ALT status] Expected 0, got 99 stdout: 65stderr: |
dash | 14 $UID and $EUID stdout: stderr: |
mksh | 14 $UID and $EUID stdout: stderr: |
dash | 15 $OSTYPE is non-empty stdout: status=1stderr: |
mksh | 15 $OSTYPE is non-empty stdout: status=1stderr: |
dash | 16 $HOSTNAME stdout: status=1stderr: |
mksh | 16 $HOSTNAME stdout: status=1stderr: |
zsh | 16 $HOSTNAME stdout: status=1stderr: |
dash | 17 $LINENO is the current line, not line of function call stdout: 1 ['2'] ['2'] ['4']stderr: |
zsh | 17 $LINENO is the current line, not line of function call stdout: 1 ['1'] ['1'] ['3']stderr: |
zsh | 18 $LINENO in "bare" redirect arg (bug regression) stdout: stderr: |
dash | 20 $LINENO in [[ stdout: onestderr: dash: 2: [[: not found |
mksh | 20 $LINENO in [[ stdout: onestderr: |
dash | 21 $LINENO in (( stdout: onestderr: dash: 2: x: not found |
mksh | 22 $LINENO in for loop stdout: one 1 zzzstderr: |
dash | 24 $LINENO in for (( loop stdout: onestderr: dash: 2: Syntax error: Bad for loop variable |
mksh | 24 $LINENO in for (( loop stdout: onestderr: mksh: <stdin>[2]: syntax error: '((' unexpected |
osh | 24 $LINENO in for (( loop [osh stdout] Expected 'one\n0\n1\n', got 'one\n0\n1\n2\n' stdout: one 0 1 2stderr: |
osh_ALT | 24 $LINENO in for (( loop [osh_ALT stdout] Expected 'one\n0\n1\n', got 'one\n0\n1\n2\n' stdout: one 0 1 2stderr: |
dash | 26 $_ with simple command and evaluation stdout: hi worldstderr: |
mksh | 26 $_ with simple command and evaluation stdout: hi worldstderr: |
dash | 27 $_ and ${_} stdout: stderr: |
mksh | 27 $_ and ${_} stdout: stderr: |
dash | 28 $_ with word splitting stdout: stderr: |
mksh | 28 $_ with word splitting stdout: stderr: |
dash | 29 $_ with pipeline and subshell stdout: stderr: |
mksh | 29 $_ with pipeline and subshell stdout: stderr: |
zsh | 29 $_ with pipeline and subshell stdout: last=3 pipeline=last=3 subshell= done=stderr: zsh: command not found: shopt seq: write error: Broken pipe |
dash | 30 $_ with && and || stdout: stderr: |
mksh | 30 $_ with && and || stdout: stderr: |
dash | 31 $_ is not reset with (( and [[ stdout: stderr: |
mksh | 31 $_ is not reset with (( and [[ stdout: stderr: |
dash | 32 $_ with assignments, arrays, etc. stdout: stderr: |
mksh | 32 $_ with assignments, arrays, etc. stdout: stderr: |
zsh | 32 $_ with assignments, arrays, etc. stdout: colon [foo] bare assign [] declare [declare] array [declare [declare]] declare array [declare] declare flag [-g]stderr: |
osh | 32 $_ with assignments, arrays, etc. stdout: colon [foo] bare assign [colon [foo]] declare [bare assign [colon [foo]]] array [declare [bare assign [colon [foo]]]] declare array [array [declare [bare assign [colon [foo]]]]] declare flag [declare array [array [declare [bare assign [colon [foo]]]]]]stderr: |
osh_ALT | 32 $_ with assignments, arrays, etc. stdout: colon [foo] bare assign [colon [foo]] declare [bare assign [colon [foo]]] array [declare [bare assign [colon [foo]]]] declare array [array [declare [bare assign [colon [foo]]]]] declare flag [declare array [array [declare [bare assign [colon [foo]]]]]]stderr: |
dash | 33 $_ with loop stdout: stderr: |
mksh | 33 $_ with loop stdout: stderr: |
zsh | 33 $_ with loop stdout: init begin=init prev= prev=prev= prev=prev=prev=stderr: |
dash | 34 $_ is not undefined on first use stdout: stderr: dash: 1: _: parameter not set |
dash | 35 BASH_VERSION / OIL_VERSION stdout: no versionstderr: |
mksh | 35 BASH_VERSION / OIL_VERSION stdout: no versionstderr: |
zsh | 35 BASH_VERSION / OIL_VERSION stdout: no versionstderr: |