Results for arith.test.sh

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

Details on runs that didn't PASS

osh10 Invalid string to int

stdout:
5
stderr:
osh-cpp10 Invalid string to int

stdout:
5
stderr:
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)
osh-cpp47 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)
osh50 Double subscript

stdout:
2
stderr:
  echo $(( a[1][1] ))
               ^
[ stdin ]:3: The [ operator doesn't apply to this expression
osh-cpp50 Double subscript

stdout:
2
stderr:
  echo $(( a[1][1] ))
               ^
[ stdin ]:3: The [ operator doesn't apply to this expression
osh58 Dynamic parsing of arithmetic

[osh stdout] Expected '6\ntrue\nstatus=2\n', got '6\ntrue\n'
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
6
true
stderr:
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 201, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 170, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 140, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1171, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 365, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2036, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1835, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1570, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 840, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 520, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 325, in RunSimpleCommand
    return self.RunBuiltin(builtin_id, cmd_val)
  File "/home/uke/oil/core/executor.py", line 209, in RunBuiltin
    status = builtin_func.Run(cmd_val)
  File "/home/uke/oil/builtin/bracket_osh.py", line 271, in Run
    b = bool_ev.EvalB(bool_node)
  File "/home/uke/oil/osh/sh_expr_eval.py", line 1137, in EvalB
    i1 = self._StringToBigIntOrError(s1, blame_word=node.left)
  File "/home/uke/oil/osh/sh_expr_eval.py", line 1029, in _StringToBigIntOrError
    i = self._StringToBigInt(s, location)
  File "/home/uke/oil/osh/sh_expr_eval.py", line 395, in _StringToBigInt
    assert self.parse_ctx is not None
AssertionError
osh-cpp58 Dynamic parsing of arithmetic

[osh-cpp stdout] Expected '6\ntrue\nstatus=2\n', got '6\ntrue\n'
[osh-cpp status] Expected 0, got 1

stdout:
6
true
stderr:
AddressSanitizer:DEADLYSIGNAL
=================================================================
==2859==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x56352ffec452 bp 0x7fffdf673b90 sp 0x7fffdf673590 T0)
==2859==The signal is caused by a READ memory access.
==2859==Hint: address points to the zero page.
    #0 0x56352ffec451 in sh_expr_eval::ArithEvaluator::_StringToBigInt(BigStr*, syntax_asdl::loc_t*) _gen/bin/oils_for_unix.mycpp.cc:41169
    #1 0x56352fff4c40 in sh_expr_eval::BoolEvaluator::_StringToBigIntOrError(BigStr*, syntax_asdl::word_t*) _gen/bin/oils_for_unix.mycpp.cc:41931
    #2 0x56352fff5ef1 in sh_expr_eval::BoolEvaluator::EvalB(syntax_asdl::bool_expr_t*) _gen/bin/oils_for_unix.mycpp.cc:42070
    #3 0x5635300a596e in bracket_osh::Test::Run(runtime_asdl::cmd_value__Argv*) _gen/bin/oils_for_unix.mycpp.cc:55919
    #4 0x56352ff0a64e in executor::ShellExecutor::RunBuiltin(int, runtime_asdl::cmd_value__Argv*) _gen/bin/oils_for_unix.mycpp.cc:23665
    #5 0x56352ff0bea7 in executor::ShellExecutor::RunSimpleCommand(runtime_asdl::cmd_value__Argv*, runtime_asdl::CommandStatus*, int) _gen/bin/oils_for_unix.mycpp.cc:23775
    #6 0x56352ffa0fee in cmd_eval::CommandEvaluator::_RunSimpleCommand(runtime_asdl::cmd_value_t*, runtime_asdl::CommandStatus*, int) _gen/bin/oils_for_unix.mycpp.cc:35363
    #7 0x56352ffa6e13 in cmd_eval::CommandEvaluator::_DoSimple(syntax_asdl::command__Simple*, runtime_asdl::CommandStatus*) _gen/bin/oils_for_unix.mycpp.cc:35734
    #8 0x56352ffb21f7 in cmd_eval::CommandEvaluator::_Dispatch(syntax_asdl::command_t*, runtime_asdl::CommandStatus*) _gen/bin/oils_for_unix.mycpp.cc:36583
    #9 0x56352ffb5002 in cmd_eval::CommandEvaluator::_Execute(syntax_asdl::command_t*) _gen/bin/oils_for_unix.mycpp.cc:36861
    #10 0x56352ffb6d56 in cmd_eval::CommandEvaluator::ExecuteAndCatch(syntax_asdl::command_t*, int) _gen/bin/oils_for_unix.mycpp.cc:37032
    #11 0x56352ff14dbb in main_loop::Batch(cmd_eval::CommandEvaluator*, cmd_parse::CommandParser*, ui::ErrorFormatter*, int) _gen/bin/oils_for_unix.mycpp.cc:24421
    #12 0x5635300c0841 in shell::Main(BigStr*, args::Reader*, Dict<BigStr*, BigStr*>*, bool, pyutil::_ResourceLoader*, py_readline::Readline*) _gen/bin/oils_for_unix.mycpp.cc:57428
    #13 0x56352fe66587 in oils_for_unix::AppBundleMain(List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:12382
    #14 0x56352fe66ad3 in oils_for_unix::main(List<BigStr*>*) _gen/bin/oils_for_unix.mycpp.cc:12414
    #15 0x5635300c29be in main _gen/bin/oils_for_unix.mycpp.cc:57453
    #16 0x7f2802f0209a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
    #17 0x56352fe3ffc9 in _start (/home/uke/oil/_bin/cxx-asan/oils-for-unix+0x19dfc9)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV _gen/bin/oils_for_unix.mycpp.cc:41169 in sh_expr_eval::ArithEvaluator::_StringToBigInt(BigStr*, syntax_asdl::loc_t*)
==2859==ABORTING