Results for ysh-builtin-eval.test.sh

statusyshysh-cpp
pass 3019
FAIL 112
total3131
caseyshysh-cppdescription
0pass FAIL eval builtin does not take a literal block - can restore this later
details
1pass pass Eval a block within a proc
2pass pass Eval block created by calling a proc
3pass FAIL io->eval with argv bindings
details
4pass pass eval lines with argv bindings
5pass pass eval lines with var bindings
6pass FAIL eval with custom dollar0
details
7pass FAIL eval with vars bindings
details
8pass pass dynamic binding names and mutation
9pass pass binding procs in the eval-ed namespace
10pass FAIL vars initializes the variable frame, but does not remember it
details
11pass FAIL eval pos_args must be strings
details
12pass FAIL eval with vars follows same scoping as without
details
13pass FAIL eval 'mystring' vs. call io->eval(myblock)
details
14pass FAIL io->eval(to_dict=true) - local and global
details
15pass FAIL io->eval(to_dict=true) with dollar0, pos_args, vars - dict ordering bug
details
16pass FAIL io->eval(to_dict=true) with in_captured_frame=true
details
17pass pass parseCommand then io->eval(to_dict=true) - in global scope
18pass pass parseCommand with syntax error
19pass pass Dict (&d) { ... } converts frame to dict
20pass pass block in Dict (&d) { ... } can read from outer scope
21pass pass block in yb-capture Dict (&d) can read from outer scope
22pass pass Dict (&d) and setvar
23pass pass Dict (&d) and setglobal
24pass pass bindings created shvar persist, which is different than eval(to_dict=true)
25pass pass io->eval with in_captured_frame=true can express cd builtin
26pass pass io->eval with in_captured_frame=true can express cd builtin in different module
27pass pass io->eval() has cleaner scoping than shell's eval builtin
28pass pass io->eval with in_captured_frame=true and setglobal
29FAIL FAIL eval should have a sandboxed mode
detailsdetails
30pass pass io->evalExpr() with vars, dollar0, pos_args
49 passed, 0 OK, 0 not implemented, 0 BUG, 1 failed, 0 timeouts, 0 cases skipped
1 failed under osh

Details on runs that didn't PASS

ysh-cpp0 eval builtin does not take a literal block - can restore this later

[ysh-cpp stdout] Expected 'obj\ncommand literal\n' Got ''

stdout:
stderr: 
  var b = ^(echo obj)
                    ^
[ stdin ]:1: Invalid word while parsing command list
ysh-cpp3 io->eval with argv bindings

[ysh-cpp stdout] Expected 'foo bar baz\n(List) ["foo","bar","baz"]\n' Got ''
[ysh-cpp status] Expected 0 Got 2

stdout:
stderr: 
  call io->eval(^(echo "$@"), pos_args=:| foo bar baz |)
                           ^
[ stdin ]:1: Invalid word while parsing command list
ysh-cpp6 eval with custom dollar0

[ysh-cpp stdout] Expected 'my arg0\n' Got ''
[ysh-cpp status] Expected 0 Got 2

stdout:
stderr: 
  var b = ^(write $0)
                    ^
[ stdin ]:1: Invalid word while parsing command list
ysh-cpp7 eval with vars bindings

[ysh-cpp stdout] Expected '(Str) "abc"\n(Str) "123"\n(Str) "abc"\n' Got ''
[ysh-cpp status] Expected 0 Got 2

stdout:
stderr: 
  call io->eval(^(pp test_ (myVar)))
                                  ^
[ stdin ]:2: Invalid word while parsing command list
ysh-cpp10 vars initializes the variable frame, but does not remember it

[ysh-cpp stdout] Expected '(Dict) {"foo":123}\n' Got ''
[ysh-cpp status] Expected 0 Got 2

stdout:
stderr: 
  call io->eval(^(var bar = 321;), vars=vars)
                                ^
[ stdin ]:2: Unexpected EOF while parsing command
ysh-cpp11 eval pos_args must be strings

[ysh-cpp status] Expected 3 Got 2

stdout:
stderr: 
  call io->eval(^(true), pos_args=[1, 2, 3])
                      ^
[ stdin ]:1: Invalid word while parsing command list
ysh-cpp12 eval with vars follows same scoping as without

[ysh-cpp stdout] Expected 'baz\nbaz\nfoo\nfoo\n' Got ''
[ysh-cpp status] Expected 0 Got 2

stdout:
stderr: 
    call io->eval(^(echo $myVar), vars={ someOtherVar: "bar" })
                               ^
[ stdin ]:3: Invalid word while parsing command list
ysh-cpp13 eval 'mystring' vs. call io->eval(myblock)

[ysh-cpp stdout] Expected 'plain\nplain=0\nplain\nplain=0\n\none\n(Dict) {"code":1}\none\n(Dict) {"code":1}\n' Got 'plain\nplain=0\n'
[ysh-cpp status] Expected 0 Got 2

stdout:
plain
plain=0
stderr:
  var b = ^(echo plain)
                      ^
[ stdin ]:3: Invalid word while parsing command list
ysh-cpp14 io->eval(to_dict=true) - local and global

[ysh-cpp stdout] Expected '(Dict) {"foo":42,"bar":"global"}\n(Dict) {"foo":42,"g":"-global","p":"-param","L":"-local"}\n' Got ''
[ysh-cpp status] Expected 0 Got 2

stdout:
stderr: 
  var d = io->eval(^(var foo = 42; var bar = g;), to_dict=true)
                                               ^
[ stdin ]:3: Unexpected EOF while parsing command
ysh-cpp15 io->eval(to_dict=true) with dollar0, pos_args, vars - dict ordering bug

[ysh-cpp stdout] Expected '{\n "foo": "global",\n "z": "zero",\n "one": "a",\n "two": "b",\n "three": "+c",\n "x": "X",\n "y": "_Y"\n}\n' Got '{\n "y": "_Y",\n "x": "X",\n "foo": "global",\n "z": "zero",\n "one": "a",\n "two": "b",\n "three": "+c"\n}\n'

stdout:
{
  "y": "_Y",
  "x": "X",
  "foo": "global",
  "z": "zero",
  "one": "a",
  "two": "b",
  "three": "+c"
}
stderr:
ysh-cpp16 io->eval(to_dict=true) with in_captured_frame=true

[ysh-cpp stdout] Expected '{\n "var_in_p_frame": "p",\n "foo": "global",\n "z": "zero",\n "one": "a",\n "two": "b",\n "three": "+c",\n "x": "X",\n "y": "_Y"\n}\n' Got '{\n "var_in_p_frame": "p",\n "y": "_Y",\n "x": "X",\n "foo": "global",\n "z": "zero",\n "one": "a",\n "two": "b",\n "three": "+c"\n}\n'

stdout:
{
  "var_in_p_frame": "p",
  "y": "_Y",
  "x": "X",
  "foo": "global",
  "z": "zero",
  "one": "a",
  "two": "b",
  "three": "+c"
}
stderr:
ysh29 eval should have a sandboxed mode

[ysh stdout] Expected 'TODO\n' Got ''
[ysh status] Expected 1 Got 2

stdout:
stderr: 
      var d = {}
          ^
[ stdin ]:12: 'd' was already declared
ysh-cpp29 eval should have a sandboxed mode

[ysh-cpp stdout] Expected 'TODO\n' Got ''
[ysh-cpp status] Expected 1 Got 2

stdout:
stderr: 
      var d = {}
          ^
[ stdin ]:12: 'd' was already declared