Results for oil-expr.test.sh

statusoshosh_ALT
pass 4747
FAIL 77
total5454
caseoshosh_ALTdescription
0pass pass command sub $(echo hi)
1pass pass shell array %(a 'b c')
2pass pass empty array and simple_word_eval (regression test)
3pass pass Empty array and assignment builtin (regression)
4pass pass Shell arrays support tilde detection, static globbing, brace detection
5pass pass augmented assignment doesn't work on shell arrays
6pass pass Set $HOME using 'var' (i.e. Oil string var in word evaluator)
7pass pass Use shell var in Oil expression
8pass pass Length in two different contexts
9pass pass $len(x) inside strings
10pass pass Func with multiple args in multiple contexts
11pass pass Trailing Comma in Param list
12pass pass @range()
13FAIL FAIL Wrong sigil $range() shows representation of iterator?
detailsdetails
14FAIL FAIL Wrong sigil @max(3, 4)
detailsdetails
15FAIL FAIL nested expr contexts
detailsdetails
16pass pass Test value.Obj inside shell arithmetic
17pass pass Parse { var x = 42 }
18pass pass double quoted
19pass pass double quoted respects strict_array
20pass pass single quoted -- implicit and explicit raw
21pass pass Implicit raw single quote with backslash is a syntax error
22pass pass single quoted C strings: c'foo\n' and $'foo\n'
23pass pass simple var sub $name $0 $1 $? etc.
24pass pass braced var sub ${x:-default}
25pass pass braced var sub respects strict_array
26pass pass null / true / false
27pass pass Integer literals
28pass pass Float Literals
29FAIL FAIL Float Literals with _ (requires re2c refinement)
detailsdetails
30pass pass Tuples
31pass pass List comprehension (deferred)
32pass pass in, not in
33pass pass Chained Comparisons
34pass pass dict with 'bare word' keys
35pass pass dict with expression keys
36pass pass dict literal with implicit value
37pass pass Dict literal with string keys
38pass pass Bitwise logical
39pass pass Shift operators
40pass pass Exponentiation with **
41pass pass Two Kinds of Division
42pass pass mod operator
43pass pass Logical operators
44pass pass x if b else y
45pass pass multiline strings, list, tuples, etc.
46pass pass multiline dict
47pass pass multiline array and command sub (only here docs disallowed)
48pass pass obj.attr and obj.method()
49FAIL FAIL obj.method does NOT give you a bound method
detailsdetails
50pass pass d->key
51pass pass a ++ b for string/list concatenation
52FAIL FAIL s ~~ glob and s !~~ glob
detailsdetails
53FAIL FAIL 3 ~== '3'
detailsdetails
94 passed, 0 OK, 0 not implemented, 0 BUG, 7 failed, 0 timeouts, 0 cases skipped
7 failed under osh

Details on runs that didn't PASS

osh13 Wrong sigil $range() shows representation of iterator?

[osh stdout] Expected 'TODO\n', got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
  echo $range(10, 15, 2)
  ^~~~
[ stdin ]:2: fatal: Expected function to return a bool, int, float, or string.  Got <type 'xrange'>
osh_ALT13 Wrong sigil $range() shows representation of iterator?

[osh_ALT stdout] Expected 'TODO\n', got ''
[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
  echo $range(10, 15, 2)
  ^~~~
[ stdin ]:2: fatal: Expected function to return a bool, int, float, or string.  Got <type 'xrange'>
osh14 Wrong sigil @max(3, 4)

[osh stdout] Expected 'TODO\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 360, in <module>
    sys.exit(main(sys.argv))
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 303, in main
    return AppBundleMain(argv)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 262, in AppBundleMain
    loader, line_input)
  File "/home/andy/git/oilshell/oil/core/shell.py", line 667, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 324, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1483, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1330, in _Execute
    status, check_errexit = self._Dispatch(node, pipeline_st)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 599, in _Dispatch
    cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1931, in EvalWordSequence2
    return self.SimpleEvalWordSequence2(words, allow_assign)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1891, in SimpleEvalWordSequence2
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1545, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted, is_subst=is_subst)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1514, in _EvalWordPart
    a = [_Stringify(item) for item in func(*pos_args, **named_args)]
TypeError: 'int' object is not iterable
osh_ALT14 Wrong sigil @max(3, 4)

[osh_ALT stdout] Expected 'TODO\n', got ''
[osh_ALT status] Expected 0, got 1
[osh_ALT stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 330, in _cpython_main_hook
    sys.exit(main(sys.argv))
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 303, in main
    return AppBundleMain(argv)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 294, in AppBundleMain
    return readlink.main(main_argv)
  File "/home/andy/git/oilshell/oil/core/shell.py", line 667, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 330, in Batch
    return status
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1483, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1330, in _Execute
    status, check_errexit = self._Dispatch(node, pipeline_st)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 636, in _Dispatch
    status = self._Execute(node.child)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1931, in EvalWordSequence2
    return self.SimpleEvalWordSequence2(words, allow_assign)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1891, in SimpleEvalWordSequence2
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1545, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted, is_subst=is_subst)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1527, in _EvalWordPart
    part_vals.append(part_val)
TypeError: 'int' object is not iterable
FATAL: couldn't import from app bundle '/home/andy/git/oilshell/oil/_tmp/oil-tar-test/oil-0.8.11/_bin/osh' (1)
Stripping the oil.ovm binary may cause this error.
See https://github.com/oilshell/oil/issues/47
osh15 nested expr contexts

[osh stdout] Expected 'len\n3\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 360, in <module>
    sys.exit(main(sys.argv))
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 303, in main
    return AppBundleMain(argv)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 262, in AppBundleMain
    loader, line_input)
  File "/home/andy/git/oilshell/oil/core/shell.py", line 667, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 309, in Batch
    node = c_parser.ParseLogicalLine()  # can raise ParseError
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 2231, in ParseLogicalLine
    node = self._ParseCommandLine()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 2093, in _ParseCommandLine
    child = self.ParseAndOr()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 2023, in ParseAndOr
    child = self.ParsePipeline()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 1966, in ParsePipeline
    child = self.ParseCommand()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 1893, in ParseCommand
    return self.ParseCompoundCommand()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 1638, in ParseCompoundCommand
    n8 = self.w_parser.ParseVarDecl(kw_token)
  File "/home/andy/git/oilshell/oil/osh/word_parse.py", line 921, in ParseVarDecl
    enode, last_token = self.parse_ctx.ParseVarDecl(kw_token, self.lexer)
  File "/home/andy/git/oilshell/oil/frontend/parse_lib.py", line 332, in ParseVarDecl
    pnode, last_token = self.e_parser.Parse(lexer, grammar_nt.oil_var_decl)
  File "/home/andy/git/oilshell/oil/oil_lang/expr_parse.py", line 311, in Parse
    lexer)
  File "/home/andy/git/oilshell/oil/oil_lang/expr_parse.py", line 214, in _PushOilTokens
    node = c_parser.ParseCommandSub()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 2267, in ParseCommandSub
    c_list = self._ParseCommandTerm()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 2156, in _ParseCommandTerm
    child = self.ParseAndOr()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 2023, in ParseAndOr
    child = self.ParsePipeline()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 1966, in ParsePipeline
    child = self.ParseCommand()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 1940, in ParseCommand
    return self.ParseSimpleCommand()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 964, in ParseSimpleCommand
    redirects, words, block = self._ScanSimpleCommand()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 694, in _ScanSimpleCommand
    self._Peek()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 532, in _Peek
    w = self.w_parser.ReadWord(self.next_lex_mode)
  File "/home/andy/git/oilshell/oil/osh/word_parse.py", line 1637, in ReadWord
    w, need_more = self._ReadWord(lex_mode)
  File "/home/andy/git/oilshell/oil/osh/word_parse.py", line 1597, in _ReadWord
    w = self._ReadCompoundWord(lex_mode)
  File "/home/andy/git/oilshell/oil/osh/word_parse.py", line 1333, in _ReadCompoundWord
    return self._ReadCompoundWord3(lex_mode, Id.Undefined_Tok, True)
  File "/home/andy/git/oilshell/oil/osh/word_parse.py", line 1392, in _ReadCompoundWord3
    self._ParseCallArguments(arglist)
  File "/home/andy/git/oilshell/oil/osh/word_parse.py", line 1254, in _ParseCallArguments
    self.parse_ctx.ParseOilArgList(self.lexer, arglist)
  File "/home/andy/git/oilshell/oil/frontend/parse_lib.py", line 361, in ParseOilArgList
    raise AssertionError()
AssertionError
osh_ALT15 nested expr contexts

[osh_ALT stdout] Expected 'len\n3\n', got ''
[osh_ALT status] Expected 0, got 1
[osh_ALT stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 330, in _cpython_main_hook
    sys.exit(main(sys.argv))
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 303, in main
    return AppBundleMain(argv)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 294, in AppBundleMain
    return readlink.main(main_argv)
  File "/home/andy/git/oilshell/oil/core/shell.py", line 667, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 309, in Batch
    node = c_parser.ParseLogicalLine()  # can raise ParseError
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 2231, in ParseLogicalLine
    node = self._ParseCommandLine()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 2093, in _ParseCommandLine
    child = self.ParseAndOr()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 2023, in ParseAndOr
    child = self.ParsePipeline()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 1966, in ParsePipeline
    child = self.ParseCommand()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 1893, in ParseCommand
    return self.ParseCompoundCommand()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 1638, in ParseCompoundCommand
    n8 = self.w_parser.ParseVarDecl(kw_token)
  File "/home/andy/git/oilshell/oil/osh/word_parse.py", line 921, in ParseVarDecl
    enode, last_token = self.parse_ctx.ParseVarDecl(kw_token, self.lexer)
  File "/home/andy/git/oilshell/oil/frontend/parse_lib.py", line 332, in ParseVarDecl
    pnode, last_token = self.e_parser.Parse(lexer, grammar_nt.oil_var_decl)
  File "/home/andy/git/oilshell/oil/oil_lang/expr_parse.py", line 311, in Parse
    lexer)
  File "/home/andy/git/oilshell/oil/oil_lang/expr_parse.py", line 291, in _PushOilTokens
    raise parse.ParseError("incomplete input", tok.id, tok)
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 2267, in ParseCommandSub
    c_list = self._ParseCommandTerm()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 2199, in _ParseCommandTerm
    return command.CommandList(children)
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 2023, in ParseAndOr
    child = self.ParsePipeline()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 1966, in ParsePipeline
    child = self.ParseCommand()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 1940, in ParseCommand
    return self.ParseSimpleCommand()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 964, in ParseSimpleCommand
    redirects, words, block = self._ScanSimpleCommand()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 694, in _ScanSimpleCommand
    self._Peek()
  File "/home/andy/git/oilshell/oil/osh/cmd_parse.py", line 532, in _Peek
    w = self.w_parser.ReadWord(self.next_lex_mode)
  File "/home/andy/git/oilshell/oil/osh/word_parse.py", line 1637, in ReadWord
    w, need_more = self._ReadWord(lex_mode)
  File "/home/andy/git/oilshell/oil/osh/word_parse.py", line 1597, in _ReadWord
    w = self._ReadCompoundWord(lex_mode)
  File "/home/andy/git/oilshell/oil/osh/word_parse.py", line 1333, in _ReadCompoundWord
    return self._ReadCompoundWord3(lex_mode, Id.Undefined_Tok, True)
  File "/home/andy/git/oilshell/oil/osh/word_parse.py", line 1494, in _ReadCompoundWord3
    word=w)
  File "/home/andy/git/oilshell/oil/osh/word_parse.py", line 1254, in _ParseCallArguments
    self.parse_ctx.ParseOilArgList(self.lexer, arglist)
  File "/home/andy/git/oilshell/oil/frontend/parse_lib.py", line 361, in ParseOilArgList
    raise AssertionError()
AssertionError
FATAL: couldn't import from app bundle '/home/andy/git/oilshell/oil/_tmp/oil-tar-test/oil-0.8.11/_bin/osh' (1)
Stripping the oil.ovm binary may cause this error.
See https://github.com/oilshell/oil/issues/47
osh29 Float Literals with _ (requires re2c refinement)

[osh stdout] Expected 'less\ngreat\n', got ''
[osh status] Expected 0, got 2

stdout:
stderr: 
  var x = 1.2 + 2_3.0e-1  # 3.5
                    ^~~~
[ stdin ]:2: Syntax error in expression (near Id.Expr_Float)
osh_ALT29 Float Literals with _ (requires re2c refinement)

[osh_ALT stdout] Expected 'less\ngreat\n', got ''
[osh_ALT status] Expected 0, got 2

stdout:
stderr: 
  var x = 1.2 + 2_3.0e-1  # 3.5
                    ^~~~
[ stdin ]:2: Syntax error in expression (near Id.Expr_Float)
osh49 obj.method does NOT give you a bound method

[osh status] Expected 0, got 1

stdout:
stderr: 
  echo $method
  ^~~~
[ stdin ]:3: fatal: Expected function to return a bool, int, float, or string.  Got <type 'builtin_function_or_method'>
osh_ALT49 obj.method does NOT give you a bound method

[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
  echo $method
  ^~~~
[ stdin ]:3: fatal: Expected function to return a bool, int, float, or string.  Got <type 'builtin_function_or_method'>
osh52 s ~~ glob and s !~~ glob

[osh stdout] Expected 'yes\nno\n', got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
  shopt -s oil:all
  ^~~~~
[ stdin ]:1: fatal: ~~ not implemented
osh_ALT52 s ~~ glob and s !~~ glob

[osh_ALT stdout] Expected 'yes\nno\n', got ''
[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
  shopt -s oil:all
  ^~~~~
[ stdin ]:1: fatal: ~~ not implemented
osh53 3 ~== '3'

[osh stdout] Expected 'exact\nint-str\nint-float\nstr-float\nint-str-float\n', got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
  shopt -s oil:all
  ^~~~~
[ stdin ]:1: fatal: ~== not implemented
osh_ALT53 3 ~== '3'

[osh_ALT stdout] Expected 'exact\nint-str\nint-float\nstr-float\nint-str-float\n', got ''
[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
  shopt -s oil:all
  ^~~~~
[ stdin ]:1: fatal: ~== not implemented