Results for builtin-bracket.test.sh

statusbashdashashzshmkshkshtoyshsushbrushosh
pass 49424437454840444252
ok 2400300000
N-I 0500100000
BUG 1100300000
FAIL 0081504128100
total52525252525252525252
casebashdashashzshmkshkshtoyshsushbrushoshdescription
0pass pass pass pass pass pass pass pass pass pass zero args: [ ]
1pass pass pass pass pass pass FAIL pass pass pass one arg: [ x ] where x is one of '=' '!' '(' ']'
details
2pass pass pass pass pass pass pass pass pass pass one arg: empty string is false. Equivalent to -n.
3pass N-I FAIL FAIL pass pass pass FAIL pass pass -a as unary operator (alias of -e)
detailsdetailsdetailsdetails
4pass pass pass pass pass pass pass pass pass pass two args: -z with = ! ( ]
5pass pass pass pass pass pass pass pass pass pass three args
6pass pass FAIL pass pass pass pass pass pass pass four args
details
7pass pass pass FAIL pass pass pass pass FAIL pass test with extra args is syntax error
detailsdetails
8pass pass pass FAIL pass pass FAIL pass pass pass ] syntax errors
detailsdetails
9pass pass pass pass pass pass pass pass pass pass -n
10pass pass pass pass pass pass pass pass pass pass ! -a
11pass pass pass pass pass pass pass pass pass pass -o
12pass pass pass pass pass pass pass pass pass pass ( )
13pass pass pass FAIL pass pass pass pass pass pass ( ) ! -a -o with system version of [
details
14pass BUG pass FAIL pass pass pass pass pass pass == is alias for =
detailsdetails
15pass N-I pass FAIL pass pass pass pass pass pass == and = does not do glob
detailsdetails
16pass pass pass pass pass pass pass pass pass pass [ with op variable
17pass pass pass FAIL pass pass pass pass FAIL pass [ with unquoted empty var
detailsdetails
18pass pass pass pass pass pass pass pass pass pass [ compare with literal -f
19pass pass pass FAIL pass pass pass pass FAIL pass [ '(' foo ] is runtime syntax error
detailsdetails
20pass pass pass FAIL pass pass pass FAIL pass pass -z '>' implies two token lookahead
detailsdetails
21pass ok FAIL pass ok pass FAIL FAIL pass pass operator/operand ambiguity with ]
detailsdetailsdetailsdetailsdetails
22pass ok FAIL pass ok pass FAIL FAIL pass pass operator/operand ambiguity with -a
detailsdetailsdetailsdetailsdetails
23pass pass pass pass pass pass pass pass pass pass -d
24pass pass pass pass pass pass pass pass pass pass -x
25pass pass pass pass pass pass pass pass pass pass -r
26pass pass pass pass pass pass pass pass pass pass -w
27pass pass pass pass pass pass pass pass pass pass -k for sticky bit
28pass pass pass pass pass pass pass pass pass pass -h and -L test for symlink
29pass pass pass pass pass pass pass pass pass pass -t 1 for stdout
30BUG pass pass FAIL pass pass pass pass FAIL pass [ -t invalid ]
detailsdetailsdetails
31pass pass pass pass pass pass pass pass pass pass -ot and -nt
32pass pass pass pass BUG FAIL pass pass FAIL pass [ a -eq b ]
detailsdetailsdetails
33pass pass pass pass pass pass pass pass pass pass test -s
34pass pass pass pass pass pass pass pass pass pass test -b -c -S (block, character, socket)
35pass pass pass pass pass pass pass pass pass pass test -p named pipe
36pass pass pass pass pass pass FAIL pass pass pass -G and -O for effective user ID and group ID
details
37pass pass pass pass pass pass pass pass pass pass -u for setuid, -g too
38pass N-I FAIL FAIL N-I pass FAIL FAIL pass pass -v to test variable (bash)
detailsdetailsdetailsdetailsdetailsdetails
39pass N-I FAIL FAIL pass pass FAIL FAIL pass pass test -o for options
detailsdetailsdetailsdetailsdetails
40pass pass pass pass pass pass pass pass pass pass -nt -ot
41pass pass pass pass pass pass pass pass pass pass -ef
42ok ok FAIL FAIL pass pass FAIL FAIL FAIL pass Overflow error
detailsdetailsdetailsdetailsdetailsdetailsdetails
43pass pass pass pass pass pass pass pass pass pass Bug regression
44pass pass pass pass pass pass pass pass pass pass test -c
45pass pass pass pass pass pass pass pass pass pass test -S
46pass pass pass pass pass pass pass pass pass pass bug from pnut: negative number $((-1))
47pass pass pass pass pass pass FAIL pass FAIL pass negative octal numbers, etc.
detailsdetails
48pass N-I pass pass pass pass FAIL pass pass pass More negative numbers
detailsdetails
49pass pass pass FAIL BUG FAIL FAIL pass FAIL pass No octal, hex, base N conversion - leading 0 is a regular decimal
detailsdetailsdetailsdetailsdetails
50ok ok FAIL FAIL ok FAIL FAIL FAIL FAIL pass Looks like octal, but digit is too big
detailsdetailsdetailsdetailsdetailsdetailsdetailsdetailsdetails
51pass pass pass pass BUG FAIL pass pass FAIL pass no recursive arith [ 1+2 -eq 3 ]
detailsdetailsdetails
443 passed, 9 OK, 6 not implemented, 5 BUG, 57 failed, 0 timeouts, 0 cases skipped

Details on runs that didn't PASS

toysh1 one arg: [ x ] where x is one of '=' '!' '(' ']'

[toysh stdout] Expected 'status=0\nstatus=0\nstatus=0\nstatus=0\n', got 'status=0\nstatus=0\nstatus=2\nstatus=2\n'

stdout:
status=0
status=0
status=2
status=2
stderr:
[: need arg @1
[: need arg @1
dash3 -a as unary operator (alias of -e)

stdout:
status=2
status=2
stderr:
dash: 1: [: -a: unexpected operator
dash: 3: [: -a: unexpected operator
ash3 -a as unary operator (alias of -e)

[ash stdout] Expected 'status=0\nstatus=1\n', got 'status=2\nstatus=2\n'

stdout:
status=2
status=2
stderr:
ash: /: unknown operand
ash: /nonexistent: unknown operand
zsh3 -a as unary operator (alias of -e)

[zsh stdout] Expected 'status=0\nstatus=1\n', got 'status=1\nstatus=1\n'

stdout:
status=1
status=1
stderr:
[: too many arguments
[: too many arguments
sush3 -a as unary operator (alias of -e)

[sush stdout] Expected 'status=0\nstatus=1\n', got 'status=2\nstatus=2\n'

stdout:
status=2
status=2
stderr:
[: ‘-a’: unary operator expected
[: ‘-a’: unary operator expected
ash6 four args

[ash stdout] Expected 'status=1\nstatus=1\n', got 'status=1\nstatus=2\n'

stdout:
status=1
status=2
stderr:
ash: closing paren expected
zsh7 test with extra args is syntax error

[zsh stdout] Expected 'status=2\nstatus=2\n', got 'status=1\nstatus=1\n'

stdout:
status=1
status=1
stderr:
test: too many arguments
test: too many arguments
brush7 test with extra args is syntax error

[brush stdout] Expected 'status=2\nstatus=2\n', got 'status=1\nstatus=1\n'

stdout:
status=1
status=1
stderr:
zsh8 ] syntax errors

[zsh stdout] Expected 'status=2\nstatus=1\nstatus=2\nstatus=2\nstatus=2\n' Got 'status=1\nstatus=1\nstatus=1\nstatus=1\nstatus=1\n'

stdout:
status=1
status=1
status=1
status=1
status=1
stderr:
[: ']' expected
[: ']' expected
[: ']' expected
[: ']' expected
toysh8 ] syntax errors

[toysh stdout] Expected 'status=2\nstatus=1\nstatus=2\nstatus=2\nstatus=2\n' Got ''
[toysh status] Expected 0, got -11

stdout:
stderr: 
zsh13 ( ) ! -a -o with system version of [

[zsh stdout] Expected 'true\n', got '[ (GNU coreutils) 9.1\nCopyright (C) 2022 Free Software Foundation, Inc.\nLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\nWritten by Kevin Braunsdorf and Matthew Bradburn.\ntrue\n'

stdout:
[ (GNU coreutils) 9.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Kevin Braunsdorf and Matthew Bradburn.
true
stderr:
dash14 == is alias for =

stdout:
true
stderr:
dash: 2: [: a: unexpected operator
zsh14 == is alias for =

[zsh stdout] Expected 'true\ntrue\n', got 'true\n'
[zsh status] Expected 0, got 1

stdout:
true
stderr:
zsh: = not found
dash15 == and = does not do glob

stdout:
status=1
status=2
stderr:
dash: 3: [: abc: unexpected operator
zsh15 == and = does not do glob

[zsh stdout] Expected 'status=1\nstatus=1\n', got 'status=1\n'
[zsh status] Expected 0, got 1

stdout:
status=1
stderr:
zsh: = not found
zsh17 [ with unquoted empty var

[zsh status] Expected 2, got 1

stdout:
stderr: 
zsh: parse error: condition expected: =
brush17 [ with unquoted empty var

[brush status] Expected 2, got 1

stdout:
stderr: 
zsh19 [ '(' foo ] is runtime syntax error

[zsh stdout] Expected 'status=2\n', got 'status=1\n'

stdout:
status=1
stderr:
[: argument expected
brush19 [ '(' foo ] is runtime syntax error

[brush stdout] Expected 'status=2\n', got 'status=1\n'

stdout:
status=1
stderr:
zsh20 -z '>' implies two token lookahead

[zsh stdout] Expected 'true\nfalse\ntrue\n', got 'true\nfalse\n'
[zsh status] Expected 0, got 1

stdout:
true
false
stderr:
[: too many arguments
sush20 -z '>' implies two token lookahead

[sush stdout] Expected 'true\nfalse\ntrue\n', got 'true\nfalse\n'
[sush status] Expected 0, got 2

stdout:
true
false
stderr:
[: ‘>’: binary operator expected
dash21 operator/operand ambiguity with ]

stdout:
status=2
stderr:
dash: 1: [: -a: unexpected operator
ash21 operator/operand ambiguity with ]

[ash stdout] Expected 'status=0\n', got 'status=2\n'

stdout:
status=2
stderr:
ash: ]: unknown operand
mksh21 operator/operand ambiguity with ]

stdout:
status=2
stderr:
mksh: <stdin>[1]: [: ]: unexpected operator/operand
toysh21 operator/operand ambiguity with ]

[toysh stdout] Expected 'status=0\n', got 'status=2\n'

stdout:
status=2
stderr:
[: too many arguments
sush21 operator/operand ambiguity with ]

[sush stdout] Expected 'status=0\n', got 'status=2\n'

stdout:
status=2
stderr:
[: extra argument ‘]’
dash22 operator/operand ambiguity with -a

stdout:
status=1
stderr:
ash22 operator/operand ambiguity with -a

[ash stdout] Expected 'status=0\n', got 'status=2\n'

stdout:
status=2
stderr:
ash: argument expected
mksh22 operator/operand ambiguity with -a

stdout:
status=2
stderr:
mksh: <stdin>[1]: [: expression expected
toysh22 operator/operand ambiguity with -a

[toysh stdout] Expected 'status=0\n', got 'status=2\n'

stdout:
status=2
stderr:
[: need arg @3
sush22 operator/operand ambiguity with -a

[sush stdout] Expected 'status=0\n', got 'status=2\n'

stdout:
status=2
stderr:
[: missing argument after ‘-a’
bash30 [ -t invalid ]

stdout:
status=1
stderr:
zsh30 [ -t invalid ]

[zsh stdout] Expected 'status=2\n', got 'status=1\n'

stdout:
status=1
stderr:
brush30 [ -t invalid ]

[brush stdout] Expected 'status=2\n', got 'status=1\n'

stdout:
status=1
stderr:
mksh32 [ a -eq b ]

stdout:
status=0
stderr:
ksh32 [ a -eq b ]

[ksh stdout] Expected 'status=2\n', got 'status=0\n'

stdout:
status=0
stderr:
brush32 [ a -eq b ]

[brush stdout] Expected 'status=2\n', got 'status=1\n'

stdout:
status=1
stderr:
toysh36 -G and -O for effective user ID and group ID

[toysh stdout] Expected 'status=0\nstatus=1\nstatus=0\nstatus=1\n', got 'status=2\nstatus=2\nstatus=2\nstatus=2\n'

stdout:
status=2
status=2
status=2
status=2
stderr:
test: too many arguments
test: too many arguments
test: too many arguments
test: too many arguments
dash38 -v to test variable (bash)

stdout:
global=2
global=2
dynamic=2
dynamic=2
dynamic=2
stderr:
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
ash38 -v to test variable (bash)

[ash stdout] Expected 'global=1\nglobal=0\ndynamic=0\ndynamic=0\ndynamic=1\n' Got 'global=2\nglobal=2\ndynamic=2\ndynamic=2\ndynamic=2\n'

stdout:
global=2
global=2
dynamic=2
dynamic=2
dynamic=2
stderr:
ash: nonexistent: unknown operand
ash: g: unknown operand
ash: f_var: unknown operand
ash: g: unknown operand
ash: nonexistent: unknown operand
zsh38 -v to test variable (bash)

[zsh stdout] Expected 'global=1\nglobal=0\ndynamic=0\ndynamic=0\ndynamic=1\n' Got 'global=2\nglobal=2\ndynamic=2\ndynamic=2\ndynamic=2\n'

stdout:
global=2
global=2
dynamic=2
dynamic=2
dynamic=2
stderr:
test: unknown condition: -v
test: unknown condition: -v
g:test:1: unknown condition: -v
g:test:3: unknown condition: -v
g:test:5: unknown condition: -v
mksh38 -v to test variable (bash)

stdout:
global=2
global=2
dynamic=2
dynamic=2
dynamic=2
stderr:
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
toysh38 -v to test variable (bash)

[toysh stdout] Expected 'global=1\nglobal=0\ndynamic=0\ndynamic=0\ndynamic=1\n' Got 'global=2\nglobal=2\ndynamic=2\ndynamic=2\ndynamic=2\n'

stdout:
global=2
global=2
dynamic=2
dynamic=2
dynamic=2
stderr:
test: too many arguments
test: too many arguments
test: too many arguments
test: too many arguments
test: too many arguments
sush38 -v to test variable (bash)

[sush stdout] Expected 'global=1\nglobal=0\ndynamic=0\ndynamic=0\ndynamic=1\n' Got 'global=2\nglobal=2\ndynamic=2\ndynamic=2\ndynamic=2\n'

stdout:
global=2
global=2
dynamic=2
dynamic=2
dynamic=2
stderr:
test: ‘-v’: unary operator expected
test: ‘-v’: unary operator expected
test: ‘-v’: unary operator expected
test: ‘-v’: unary operator expected
test: ‘-v’: unary operator expected
dash39 test -o for options

stdout:
status=2
status=2
status=2
stderr:
dash: 1: test: -o: unexpected operator
dash: 5: test: -o: unexpected operator
dash: 8: test: -o: unexpected operator
ash39 test -o for options

[ash stdout] Expected 'status=1\nstatus=0\nstatus=1\n', got 'status=2\nstatus=2\nstatus=2\n'

stdout:
status=2
status=2
status=2
stderr:
ash: nounset: unknown operand
ash: nounset: unknown operand
ash: _bad_name_: unknown operand
zsh39 test -o for options

[zsh stdout] Expected 'status=1\nstatus=0\nstatus=1\n', got 'status=1\nstatus=1\nstatus=1\n'

stdout:
status=1
status=1
status=1
stderr:
test: too many arguments
test: too many arguments
test: too many arguments
toysh39 test -o for options

[toysh stdout] Expected 'status=1\nstatus=0\nstatus=1\n', got 'status=2\nstatus=2\nstatus=2\n'

stdout:
status=2
status=2
status=2
stderr:
test: too many arguments
set: bad -o nounset
test: too many arguments
test: too many arguments
sush39 test -o for options

[sush stdout] Expected 'status=1\nstatus=0\nstatus=1\n', got 'status=2\nstatus=2\nstatus=2\n'

stdout:
status=2
status=2
status=2
stderr:
test: ‘-o’: unary operator expected
/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: set: nounset: invalid option name
test: ‘-o’: unary operator expected
test: ‘-o’: unary operator expected
bash42 Overflow error

stdout:
status=1
stderr:
dash42 Overflow error

stdout:
status=1
stderr:
ash42 Overflow error

[ash stdout] Expected 'status=2\n', got 'status=1\n'

stdout:
status=1
stderr:
zsh42 Overflow error

[zsh stdout] Expected 'status=2\n', got 'status=1\n'

stdout:
status=1
stderr:
toysh42 Overflow error

[toysh stdout] Expected 'status=2\n', got 'status=1\n'

stdout:
status=1
stderr:
sush42 Overflow error

[sush stdout] Expected 'status=2\n', got 'status=1\n'

stdout:
status=1
stderr:
brush42 Overflow error

[brush stdout] Expected 'status=2\n', got 'status=1\n'

stdout:
status=1
stderr:
toysh47 negative octal numbers, etc.

[toysh stdout] Expected 'zero=0\noctal=1\nhex=2\nbaseN=2\n', got 'zero=0\noctal=0\nhex=0\nbaseN=2\n'

stdout:
zero=0
octal=0
hex=0
baseN=2
stderr:
[: not integer: -64#a
brush47 negative octal numbers, etc.

[brush stdout] Expected 'zero=0\noctal=1\nhex=2\nbaseN=2\n', got 'zero=0\noctal=1\nhex=1\nbaseN=1\n'

stdout:
zero=0
octal=1
hex=1
baseN=1
stderr:
dash48 More negative numbers

stdout:
stderr: 
toysh48 More negative numbers

[toysh stdout] Expected 'status=0\nstatus=0\n', got ''
[toysh status] Expected 0, got -6

stdout:
stderr: 
munmap_chunk(): invalid pointer
zsh49 No octal, hex, base N conversion - leading 0 is a regular decimal

[zsh stdout] Expected '59\n-59\n\nstatus=0\nstatus=0\n\nhex=2\nbaseN=2\n' Got '73\n-73\n\nstatus=0\nstatus=0\n\nhex=2\nbaseN=2\n'

stdout:
73
-73

status=0
status=0

hex=2
baseN=2
stderr:
[: integer expression expected: 0xff
[: integer expression expected: 64#a
mksh49 No octal, hex, base N conversion - leading 0 is a regular decimal

stdout:
73
-73

status=0
status=0

hex=2
baseN=2
stderr:
mksh: <stdin>[14]: 0xff: bad number '0xff'
mksh: <stdin>[16]: 64#a: bad number '64#a'
ksh49 No octal, hex, base N conversion - leading 0 is a regular decimal

[ksh stdout] Expected '59\n-59\n\nstatus=0\nstatus=0\n\nhex=2\nbaseN=2\n' Got '73\n-73\n\nstatus=0\nstatus=0\n\nhex=2\nbaseN=2\n'

stdout:
73
-73

status=0
status=0

hex=2
baseN=2
stderr:
W: ksh: <stdin>[14]: 0xff: bad number: Invalid argument
W: ksh: <stdin>[16]: 64#a: bad number: Invalid argument
toysh49 No octal, hex, base N conversion - leading 0 is a regular decimal

[toysh stdout] Expected '59\n-59\n\nstatus=0\nstatus=0\n\nhex=2\nbaseN=2\n' Got '59\n-59\n\nstatus=1\nstatus=1\n\nhex=0\nbaseN=2\n'

stdout:
59
-59

status=1
status=1

hex=0
baseN=2
stderr:
[: not integer: 64#a
brush49 No octal, hex, base N conversion - leading 0 is a regular decimal

[brush stdout] Expected '59\n-59\n\nstatus=0\nstatus=0\n\nhex=2\nbaseN=2\n' Got '59\n-59\n\nstatus=0\nstatus=0\n\nhex=1\nbaseN=1\n'

stdout:
59
-59

status=0
status=0

hex=1
baseN=1
stderr:
bash50 Looks like octal, but digit is too big

stdout:
status=1
status=1

status=0
status=0
stderr:
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")
dash50 Looks like octal, but digit is too big

stdout:
stderr: 
dash: 1: arithmetic expression: expecting EOF: " 083 "
ash50 Looks like octal, but digit is too big

[ash status] Expected 1, got 2

stdout:
stderr: 
ash: arithmetic syntax error
zsh50 Looks like octal, but digit is too big

[zsh stdout] Expected '', got '83\nstatus=0\n-83\nstatus=0\n\nstatus=0\nstatus=0\n'
[zsh status] Expected 1, got 0

stdout:
83
status=0
-83
status=0

status=0
status=0
stderr:
mksh50 Looks like octal, but digit is too big

stdout:
83
status=0
-83
status=0

status=0
status=0
stderr:
ksh50 Looks like octal, but digit is too big

[ksh stdout] Expected '', got '83\nstatus=0\n-83\nstatus=0\n\nstatus=0\nstatus=0\n'
[ksh status] Expected 1, got 0

stdout:
83
status=0
-83
status=0

status=0
status=0
stderr:
toysh50 Looks like octal, but digit is too big

[toysh stdout] Expected '', got 'status=1\nstatus=1\n\nstatus=2\nstatus=2\n'
[toysh status] Expected 1, got 0

stdout:
status=1
status=1

status=2
status=2
stderr:
main: line 1: sh: bad math:  083  @ 3
main: line 4: sh: bad math:  -083  @ 4
[: not integer: 083
[: not integer: -083
sush50 Looks like octal, but digit is too big

[sush stdout] Expected '', got 'status=1\nstatus=1\n\nstatus=0\nstatus=0\n'
[sush status] Expected 1, got 0

stdout:
status=1
status=1

status=0
status=0
stderr:
/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: 083: value too great for base (error token is "083")
/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: 083: value too great for base (error token is "083")
brush50 Looks like octal, but digit is too big

[brush stdout] Expected '', got 'status=1\nstatus=1\n\nstatus=0\nstatus=0\n'
[brush status] Expected 1, got 0

stdout:
status=1
status=1

status=0
status=0
stderr:
ERROR error: arithmetic evaluation error: failed to parse expression: ' 083 '
ERROR error: arithmetic evaluation error: failed to parse expression: ' -083 '
mksh51 no recursive arith [ 1+2 -eq 3 ]

stdout:
status=0
status=0
stderr:
ksh51 no recursive arith [ 1+2 -eq 3 ]

[ksh stdout] Expected 'status=2\nstatus=2\n', got 'status=0\nstatus=0\n'

stdout:
status=0
status=0
stderr:
brush51 no recursive arith [ 1+2 -eq 3 ]

[brush stdout] Expected 'status=2\nstatus=2\n', got 'status=1\nstatus=1\n'

stdout:
status=1
status=1
stderr: