spec test index / oilshell.org
status | dash | bash | mksh | osh | |
pass | 42 | 49 | 45 | 52 | |
ok | 4 | 2 | 3 | 0 | |
N-I | 5 | 0 | 1 | 0 | |
BUG | 1 | 1 | 3 | 0 | |
total | 52 | 52 | 52 | 52 | |
case | dash | bash | mksh | osh | description |
0 | pass | pass | pass | pass | zero args: [ ] |
1 | pass | pass | pass | pass | one arg: [ x ] where x is one of '=' '!' '(' ']' |
2 | pass | pass | pass | pass | one arg: empty string is false. Equivalent to -n. |
3 | N-I | pass | pass | pass | -a as unary operator (alias of -e) |
details | |||||
4 | pass | pass | pass | pass | two args: -z with = ! ( ] |
5 | pass | pass | pass | pass | three args |
6 | pass | pass | pass | pass | four args |
7 | pass | pass | pass | pass | test with extra args is syntax error |
8 | pass | pass | pass | pass | ] syntax errors |
9 | pass | pass | pass | pass | -n |
10 | pass | pass | pass | pass | ! -a |
11 | pass | pass | pass | pass | -o |
12 | pass | pass | pass | pass | ( ) |
13 | pass | pass | pass | pass | ( ) ! -a -o with system version of [ |
14 | BUG | pass | pass | pass | == is alias for = |
details | |||||
15 | N-I | pass | pass | pass | == and = does not do glob |
details | |||||
16 | pass | pass | pass | pass | [ with op variable |
17 | pass | pass | pass | pass | [ with unquoted empty var |
18 | pass | pass | pass | pass | [ compare with literal -f |
19 | pass | pass | pass | pass | [ '(' foo ] is runtime syntax error |
20 | pass | pass | pass | pass | -z '>' implies two token lookahead |
21 | ok | pass | ok | pass | operator/operand ambiguity with ] |
details | details | ||||
22 | ok | pass | ok | pass | operator/operand ambiguity with -a |
details | details | ||||
23 | pass | pass | pass | pass | -d |
24 | pass | pass | pass | pass | -x |
25 | pass | pass | pass | pass | -r |
26 | pass | pass | pass | pass | -w |
27 | pass | pass | pass | pass | -k for sticky bit |
28 | pass | pass | pass | pass | -h and -L test for symlink |
29 | pass | pass | pass | pass | -t 1 for stdout |
30 | pass | BUG | pass | pass | [ -t invalid ] |
details | |||||
31 | pass | pass | pass | pass | -ot and -nt |
32 | pass | pass | BUG | pass | [ a -eq b ] |
details | |||||
33 | pass | pass | pass | pass | test -s |
34 | pass | pass | pass | pass | test -b -c -S (block, character, socket) |
35 | pass | pass | pass | pass | test -p named pipe |
36 | pass | pass | pass | pass | -G and -O for effective user ID and group ID |
37 | pass | pass | pass | pass | -u for setuid, -g too |
38 | N-I | pass | N-I | pass | -v to test variable (bash) |
details | details | ||||
39 | N-I | pass | pass | pass | test -o for options |
details | |||||
40 | pass | pass | pass | pass | -nt -ot |
41 | pass | pass | pass | pass | -ef |
42 | ok | ok | pass | pass | Overflow error |
details | details | ||||
43 | pass | pass | pass | pass | Bug regression |
44 | pass | pass | pass | pass | test -c |
45 | pass | pass | pass | pass | test -S |
46 | pass | pass | pass | pass | bug from pnut: negative number $((-1)) |
47 | pass | pass | pass | pass | negative octal numbers, etc. |
48 | N-I | pass | pass | pass | More negative numbers |
details | |||||
49 | pass | pass | BUG | pass | No octal, hex, base N conversion - leading 0 is a regular decimal |
details | |||||
50 | ok | ok | ok | pass | Looks like octal, but digit is too big |
details | details | details | |||
51 | pass | pass | BUG | pass | no recursive arith [ 1+2 -eq 3 ] |
details |
188 passed, 9 OK, 6 not implemented, 5 BUG, 0 failed, 0 timeouts, 0 cases skipped
dash | 3 -a as unary operator (alias of -e) stdout: status=2 status=2stderr: dash: 1: [: -a: unexpected operator dash: 3: [: -a: unexpected operator |
dash | 14 == is alias for = stdout: truestderr: dash: 2: [: a: unexpected operator |
dash | 15 == and = does not do glob stdout: status=1 status=2stderr: dash: 3: [: abc: unexpected operator |
dash | 21 operator/operand ambiguity with ] stdout: status=2stderr: dash: 1: [: -a: unexpected operator |
mksh | 21 operator/operand ambiguity with ] stdout: status=2stderr: mksh: <stdin>[1]: [: ]: unexpected operator/operand |
dash | 22 operator/operand ambiguity with -a stdout: status=1stderr: |
mksh | 22 operator/operand ambiguity with -a stdout: status=2stderr: mksh: <stdin>[1]: [: expression expected |
bash | 30 [ -t invalid ] stdout: status=1stderr: |
mksh | 32 [ a -eq b ] stdout: status=0stderr: |
dash | 38 -v to test variable (bash) stdout: global=2 global=2 dynamic=2 dynamic=2 dynamic=2stderr: dash: 1: test: -v: unexpected operator dash: 5: test: -v: unexpected operator dash: 14: test: -v: unexpected operator dash: 16: test: -v: unexpected operator dash: 18: test: -v: unexpected operator |
mksh | 38 -v to test variable (bash) stdout: global=2 global=2 dynamic=2 dynamic=2 dynamic=2stderr: mksh: <stdin>[1]: test: nonexistent: unexpected operator/operand mksh: <stdin>[5]: test: g: unexpected operator/operand mksh: <stdin>[21]: test: f_var: unexpected operator/operand mksh: <stdin>[21]: test: g: unexpected operator/operand mksh: <stdin>[21]: test: nonexistent: unexpected operator/operand |
dash | 39 test -o for options stdout: status=2 status=2 status=2stderr: dash: 1: test: -o: unexpected operator dash: 5: test: -o: unexpected operator dash: 8: test: -o: unexpected operator |
dash | 42 Overflow error stdout: status=1stderr: |
bash | 42 Overflow error stdout: status=1stderr: |
dash | 48 More negative numbers stdout: stderr: |
mksh | 49 No octal, hex, base N conversion - leading 0 is a regular decimal stdout: 73 -73 status=0 status=0 hex=2 baseN=2stderr: mksh: <stdin>[14]: 0xff: bad number '0xff' mksh: <stdin>[16]: 64#a: bad number '64#a' |
dash | 50 Looks like octal, but digit is too big stdout: stderr: dash: 1: arithmetic expression: expecting EOF: " 083 " |
bash | 50 Looks like octal, but digit is too big stdout: status=1 status=1 status=0 status=0stderr: bash: line 1: 083: value too great for base (error token is "083") bash: line 4: -083: value too great for base (error token is "083") |
mksh | 50 Looks like octal, but digit is too big stdout: 83 status=0 -83 status=0 status=0 status=0stderr: |
mksh | 51 no recursive arith [ 1+2 -eq 3 ] stdout: status=0 status=0stderr: |