arith () { run-file arith "$@" } run-file () { local spec_name=$1; shift; sh-spec spec/$spec_name.test.sh --compare-shells --oils-bin-dir $PWD/bin "$@" } arith: spec test case results

Results for arith.test.sh

statusbashdashmkshzshosh
pass 6028514467
ok 66583
N-I 233880
BUG 236100
total7070707070
casebashdashmkshzshoshdescription
0pass N-I pass ok pass Side Effect in Array Indexing
detailsdetails
1pass pass pass pass pass Add one to var
2pass pass pass pass pass $ is optional
3pass pass pass pass pass SimpleVarSub within arith
4pass pass pass pass pass BracedVarSub within ArithSub
5pass pass pass pass pass Arith word part
6pass pass pass pass pass Arith sub with word parts
7N-I N-I pass N-I pass Constant with quotes like '1'
detailsdetailsdetails
8pass pass pass pass pass Arith sub within arith sub
9pass pass pass pass pass Backticks within arith sub
10ok ok ok ok ok Invalid string to int
detailsdetailsdetailsdetailsdetails
11N-I ok N-I N-I pass Invalid string to int with strict_arith
detailsdetailsdetailsdetails
12pass pass pass pass pass Newline in the middle of expression
13pass pass pass pass pass Ternary operator
14pass N-I pass pass pass Preincrement
details
15pass N-I pass pass pass Postincrement
details
16pass N-I pass pass pass Increment undefined variables
details
17pass N-I pass BUG pass Increment and decrement array elements
detailsdetails
18pass ok BUG BUG pass Increment undefined variables with nounset
detailsdetailsdetails
19pass N-I pass pass pass Comma operator (borrowed from C)
details
20pass pass pass pass pass Augmented assignment
21pass pass pass pass pass Comparison Ops
22pass pass pass pass pass Logical Ops
23pass N-I pass pass pass Logical Ops Short Circuit
details
24pass pass pass pass pass Bitwise ops
25pass pass pass pass pass Unary minus and plus
26ok pass ok BUG pass No floating point
detailsdetailsdetails
27pass N-I pass ok pass Array indexing in arith
detailsdetails
28pass N-I pass pass pass Constants in base 36
details
29pass N-I N-I N-I pass Constants in bases 2 to 64
detailsdetailsdetails
30pass N-I pass pass pass Multiple digit constants with base N
details
31pass N-I pass pass pass Dynamic base constants
details
32pass pass N-I N-I pass Octal constant
detailsdetails
33pass pass N-I N-I pass Dynamic octal constant
detailsdetails
34pass pass pass pass pass Dynamic hex constants
35pass pass pass pass pass Dynamic var names - result of runtime parse/eval
36pass N-I pass pass pass Recursive name evaluation is a result of runtime parse/eval
details
37pass BUG BUG BUG pass nounset with arithmetic
detailsdetailsdetails
38pass pass BUG pass pass 64-bit integer doesn't overflow
details
39pass N-I BUG pass pass More 64-bit ops
detailsdetails
40ok N-I ok ok pass Invalid LValue
detailsdetailsdetailsdetails
41ok N-I ok ok pass Invalid LValue that looks like array
detailsdetailsdetailsdetails
42ok N-I ok ok pass Invalid LValue: two sets of brackets
detailsdetailsdetailsdetails
43pass pass pass pass pass Operator Precedence
44pass N-I N-I pass pass Exponentiation with **
detailsdetails
45pass N-I N-I pass pass Exponentiation operator has buggy precedence
detailsdetails
46pass N-I pass ok pass Negative exponent
detailsdetails
47ok ok pass pass ok Comment not allowed in the middle of multiline arithmetic
detailsdetailsdetails
48pass N-I N-I N-I pass Add integer to indexed array (a[0] decay)
detailsdetailsdetails
49pass BUG pass pass pass Add integer to associative array (a[0] decay)
details
50pass N-I pass ok ok Double subscript
detailsdetailsdetails
51pass N-I pass N-I pass result of ArithSub -- array[0] decay
detailsdetails
52pass N-I N-I pass pass result of ArithSub -- assoc[0] decay
detailsdetails
53pass N-I pass N-I pass comma operator
detailsdetails
54pass pass pass pass pass assignment with dynamic var name
55pass N-I pass BUG pass array assignment with dynamic array name
detailsdetails
56pass BUG pass pass pass unary assignment with dynamic var name
details
57pass N-I pass BUG pass unary array assignment with dynamic var name
detailsdetails
58pass N-I BUG pass pass Dynamic parsing of arithmetic
detailsdetails
59pass pass pass pass pass Dynamic parsing on empty string
60pass pass pass pass pass nested ternary (bug fix)
61pass pass pass BUG pass 1 ? a=1 : b=2 ( bug fix)
details
62BUG ok pass pass pass Invalid constant
detailsdetails
63pass pass pass pass pass Negative numbers with integer division /
64pass pass pass pass pass Negative numbers with %
65pass N-I pass pass pass undef[0]
details
66pass N-I BUG BUG pass undef[0] with nounset
detailsdetailsdetails
67pass N-I pass pass pass s[0] with string abc
details
68pass N-I pass BUG pass s[0] with string 42
detailsdetails
69BUG ok pass BUG pass s[0] with string '12 34'
detailsdetailsdetails
250 passed, 28 OK, 51 not implemented, 21 BUG, 0 failed, 0 timeouts, 0 cases skipped

Details on runs that didn't PASS

dash0 Side Effect in Array Indexing

stdout:
stderr: 
dash: 1: Syntax error: "(" unexpected
zsh0 Side Effect in Array Indexing

stdout:
5 b=2
stderr:
bash7 Constant with quotes like '1'

stdout:
stderr: 
bash: line 1: '1' + 2: syntax error: operand expected (error token is "'1' + 2")
dash7 Constant with quotes like '1'

stdout:
stderr: 
dash: 1: arithmetic expression: expecting primary: "'1' + 2"
zsh7 Constant with quotes like '1'

stdout:
stderr: 
zsh: bad math expression: illegal character: '
bash10 Invalid string to int

stdout:
5
stderr:
bash: line 1: shopt: strict_arith: invalid shell option name
dash10 Invalid string to int

stdout:
stderr: 
dash: 1: shopt: not found
dash: 3: Illegal number: foo
mksh10 Invalid string to int

stdout:
5
stderr:
mksh: <stdin>[1]: shopt: not found
zsh10 Invalid string to int

stdout:
5
stderr:
zsh: command not found: shopt
osh10 Invalid string to int

stdout:
5
stderr:
bash11 Invalid string to int with strict_arith

stdout:
foo
5
should not get here
stderr:
bash: line 1: shopt: strict_arith: invalid shell option name
dash11 Invalid string to int with strict_arith

stdout:
foo
stderr:
dash: 1: shopt: not found
dash: 4: Illegal number: foo
mksh11 Invalid string to int with strict_arith

stdout:
foo
5
should not get here
stderr:
mksh: <stdin>[1]: shopt: not found
zsh11 Invalid string to int with strict_arith

stdout:
foo
5
should not get here
stderr:
zsh: command not found: shopt
dash14 Preincrement

stdout:
4
4
stderr:
dash15 Postincrement

stdout:
stderr: 
dash: 2: arithmetic expression: expecting primary: "a++"
dash16 Increment undefined variables

stdout:
[][]
stderr:
dash: 1: shopt: not found
dash: 2: undef1++: not found
dash: 3: ++undef2: not found
dash17 Increment and decrement array elements

stdout:
stderr: 
dash: 1: shopt: not found
dash: 2: Syntax error: "(" unexpected
zsh17 Increment and decrement array elements

stdout:
5 6 7 8 -
stderr:
zsh: command not found: shopt
zsh: a: assignment to invalid subscript range
zsh: undef: assignment to invalid subscript range
dash18 Increment undefined variables with nounset

stdout:
stderr: 
dash: 2: undef1++: not found
dash: 3: ++undef2: not found
dash: 4: undef1: parameter not set
mksh18 Increment undefined variables with nounset

stdout:
[1][1]
stderr:
zsh18 Increment undefined variables with nounset

stdout:
[1][1]
stderr:
dash19 Comma operator (borrowed from C)

stdout:
stderr: 
dash: 3: arithmetic expression: expecting EOF: "a,(b+1)"
dash23 Logical Ops Short Circuit

stdout:
11
11
11
11
stderr:
dash: 2: 1: not found
dash: 2: x: not found
dash: 4: 0: not found
dash: 4: x: not found
dash: 6: 0: not found
dash: 8: 1: not found
bash26 No floating point

stdout:
stderr: 
bash: line 1: 1 + 2.3: syntax error: invalid arithmetic operator (error token is ".3")
mksh26 No floating point

stdout:
stderr: 
mksh: <stdin>[1]: 1 + 2.3: unexpected '.'
zsh26 No floating point

stdout:
3.2999999999999998
stderr:
dash27 Array indexing in arith

stdout:
stderr: 
dash: 1: Syntax error: "(" unexpected
zsh27 Array indexing in arith

stdout:
7
stderr:
dash28 Constants in base 36

stdout:
stderr: 
dash: 1: arithmetic expression: expecting EOF: "36#a"
dash29 Constants in bases 2 to 64

stdout:
stderr: 
dash: 1: arithmetic expression: expecting EOF: "64#a"
mksh29 Constants in bases 2 to 64

stdout:
stderr: 
mksh: <stdin>[1]: 64#a: bad number '64#a'
zsh29 Constants in bases 2 to 64

stdout:
stderr: 
zsh: invalid base (must be 2 to 36 inclusive): 64
dash30 Multiple digit constants with base N

stdout:
stderr: 
dash: 1: arithmetic expression: expecting EOF: "10#0123"
dash31 Dynamic base constants

stdout:
stderr: 
dash: 2: arithmetic expression: expecting EOF: " 16#a "
mksh32 Octal constant

stdout:
11
stderr:
zsh32 Octal constant

stdout:
11
stderr:
mksh33 Dynamic octal constant

stdout:
11
stderr:
zsh33 Dynamic octal constant

stdout:
11
stderr:
dash36 Recursive name evaluation is a result of runtime parse/eval

stdout:
stderr: 
dash: 5: Illegal number: foo
dash37 nounset with arithmetic

stdout:
should not get here: x=5
stderr:
mksh37 nounset with arithmetic

stdout:
should not get here: x=5
stderr:
zsh37 nounset with arithmetic

stdout:
should not get here: x=5
stderr:
mksh38 64-bit integer doesn't overflow

stdout:
-2147483648
0
-2147483648
max positive = 2147483647
stderr:
dash39 More 64-bit ops

stdout:
stderr: 
mksh39 More 64-bit ops

stdout:
eq=1
eq=0
greater=1
greater=1
ge=1
ge=0
le=0
le=0
stderr:
bash40 Invalid LValue

stdout:
9
stderr:
bash: line 2: ((: (a + 2) = 3 : attempted assignment to non-variable (error token is "= 3 ")
dash40 Invalid LValue

stdout:
stderr: 
dash: 2: Syntax error: word unexpected (expecting ")")
mksh40 Invalid LValue

stdout:
9
stderr:
mksh: <stdin>[2]:  (a + 2) = 3 : = requires lvalue
zsh40 Invalid LValue

stdout:
9
stderr:
zsh: bad math expression: lvalue required
bash41 Invalid LValue that looks like array

stdout:
status=1
stderr:
bash: line 1: ((: 1[2] = 3 : syntax error: invalid arithmetic operator (error token is "[2] = 3 ")
dash41 Invalid LValue that looks like array

stdout:
status=127
stderr:
dash: 1: 1[2]: not found
mksh41 Invalid LValue that looks like array

stdout:
status=2
stderr:
mksh: <stdin>[1]:  1[2] = 3 : unexpected '['
zsh41 Invalid LValue that looks like array

stdout:
status=2
stderr:
zsh: bad base syntax
bash42 Invalid LValue: two sets of brackets

stdout:
status=1
stderr:
bash: line 1: ((: a[1][2] = 3 : syntax error: invalid arithmetic operator (error token is "[2] = 3 ")
dash42 Invalid LValue: two sets of brackets

stdout:
status=127
stderr:
dash: 1: a[1][2]: not found
mksh42 Invalid LValue: two sets of brackets

stdout:
status=2
stderr:
mksh: <stdin>[1]:  a[1][2] = 3 : unexpected '['
zsh42 Invalid LValue: two sets of brackets

stdout:
status=2
stderr:
zsh: bad base syntax
dash44 Exponentiation with **

stdout:
stderr: 
dash: 1: arithmetic expression: expecting primary: " 3 ** 0 "
mksh44 Exponentiation with **

stdout:
stderr: 
mksh: <stdin>[1]:  3 ** 0 : unexpected '*'
dash45 Exponentiation operator has buggy precedence

stdout:
stderr: 
dash: 1: arithmetic expression: expecting primary: " -3 ** 2 "
mksh45 Exponentiation operator has buggy precedence

stdout:
stderr: 
mksh: <stdin>[1]:  -3 ** 2 : unexpected '*'
dash46 Negative exponent

stdout:
stderr: 
dash: 1: arithmetic expression: expecting primary: " 2**-1 * 5 "
zsh46 Negative exponent

stdout:
2.5
stderr:
bash47 Comment not allowed in the middle of multiline arithmetic

stdout:
6
[]
stderr:
bash: line 8: 
1 + 2  # not a comment
: syntax error: invalid arithmetic operator (error token is "# not a comment
")
bash: line 10: ((: a = 3 + 4  # comment
: syntax error: invalid arithmetic operator (error token is "# comment
")
dash47 Comment not allowed in the middle of multiline arithmetic

stdout:
6
stderr:
dash: 6: arithmetic expression: expecting EOF: "
1 + 2  # not a comment
"
osh47 Comment not allowed in the middle of multiline arithmetic

stdout:
6
stderr:
  1 + 2  # not a comment
         ^
[ stdin ]:7: Unexpected token after arithmetic expression (Id.Word_Compound != Id.Arith_RParen)
dash48 Add integer to indexed array (a[0] decay)

stdout:
stderr: 
dash: 1: Syntax error: "(" unexpected
mksh48 Add integer to indexed array (a[0] decay)

stdout:
stderr: 
mksh: <stdin>[1]: syntax error: '(' unexpected
zsh48 Add integer to indexed array (a[0] decay)

stdout:
stderr: 
zsh: bad math expression: operator expected at `2 3'
dash49 Add integer to associative array (a[0] decay)

stdout:
5
stderr:
dash: 1: typeset: not found
dash: 2: assoc[0]=42: not found
dash50 Double subscript

stdout:
stderr: 
dash: 1: Syntax error: "(" unexpected
zsh50 Double subscript

stdout:
1
stderr:
zsh: bad base syntax
osh50 Double subscript

stdout:
2
stderr:
  echo $(( a[1][1] ))
               ^
[ stdin ]:3: The [ operator doesn't apply to this expression
dash51 result of ArithSub -- array[0] decay

stdout:
stderr: 
dash: 1: Syntax error: "(" unexpected
zsh51 result of ArithSub -- array[0] decay

stdout:
declared
stderr:
zsh: bad math expression: operator expected at `5 6'
dash52 result of ArithSub -- assoc[0] decay

stdout:
stderr: 
dash: 1: Syntax error: "(" unexpected
mksh52 result of ArithSub -- assoc[0] decay

stdout:
stderr: 
mksh: <stdin>[1]: syntax error: '(' unexpected
dash53 comma operator

stdout:
stderr: 
dash: 1: Syntax error: "(" unexpected
zsh53 comma operator

stdout:
stderr: 
zsh: bad math expression: operator expected at `5 6'
dash55 array assignment with dynamic array name

stdout:
stderr: 
dash: 2: arithmetic expression: expecting EOF: " xbar[5] = 42 "
zsh55 array assignment with dynamic array name

stdout:
42
xbar[5]=
stderr:
dash56 unary assignment with dynamic var name

stdout:
stderr: 
dash: 3: arithmetic expression: expecting primary: " xbar++ "
dash57 unary array assignment with dynamic var name

stdout:
stderr: 
dash: 2: xbar[5]=42: not found
dash: 3: arithmetic expression: expecting EOF: " xbar[5]++ "
zsh57 unary array assignment with dynamic var name

stdout:
0
xbar[5]=42
stderr:
dash58 Dynamic parsing of arithmetic

stdout:
stderr: 
dash: 2: Illegal number: 1+2
mksh58 Dynamic parsing of arithmetic

stdout:
6
true
status=0
stderr:
zsh61 1 ? a=1 : b=2 ( bug fix)

stdout:
stderr: 
zsh: bad math expression: ':' expected
bash62 Invalid constant

stdout:
0
status=0
status=1
status=1
stderr:
bash: line 1: a + 42x: value too great for base (error token is "42x")
bash: line 7: a + 42x: value too great for base (error token is "42x")
dash62 Invalid constant

stdout:
0
status=0
status=2
stderr:
dash: 1: arithmetic expression: expecting EOF: "a + 42x"
dash: 7: arithmetic expression: expecting EOF: "a + 42x"
dash65 undef[0]

stdout:
stderr: 
dash66 undef[0] with nounset

stdout:
stderr: 
mksh66 undef[0] with nounset

stdout:
UNSET 0
status=0
stderr:
zsh66 undef[0] with nounset

stdout:
UNSET 0
status=0
stderr:
dash67 s[0] with string abc

stdout:
stderr: 
dash68 s[0] with string 42

stdout:
stderr: 
zsh68 s[0] with string 42

stdout:
42 0 4
status=0
stderr:
bash69 s[0] with string '12 34'

stdout:
status=1
stderr:
bash: line 2: 12 34: syntax error in expression (error token is "34")
dash69 s[0] with string '12 34'

stdout:
stderr: 
dash: 2: Illegal number: 12 34
zsh69 s[0] with string '12 34'

stdout:
12 34 0 1
status=0
stderr: