Results for ysh-builtin-eval.test.sh

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

Details on runs that didn't PASS

ysh4 eval should have a sandboxed mode

[ysh stdout] Expected 'TODO\n', got ''

stdout:
stderr: 
    push-frame {
               ^
[ stdin ]:4: fatal: 'push-frame' appears to be external. External commands don't accept typed args (OILS-ERR-200)
ysh-cpp4 eval should have a sandboxed mode

[ysh-cpp stdout] Expected 'TODO\n', got ''

stdout:
stderr: 
    push-frame {
               ^
[ stdin ]:4: fatal: 'push-frame' appears to be external. External commands don't accept typed args (OILS-ERR-200)
ysh19 Dict (&d) { ... } converts frame to dict

[ysh stdout] Expected '', got '(Dict) {"k":"k-block-mutated","k2":"k2-block","k3":"k3","myglobal":"global"}\nk=k-shadowed\nk2=k2-shadowed\n'
[ysh status] Expected 0, got 2

stdout:
(Dict)   {"k":"k-block-mutated","k2":"k2-block","k3":"k3","myglobal":"global"}
k=k-shadowed
k2=k2-shadowed
stderr:
      setvar k2 = 'k2-proc'  # local, so it's checked
             ^~
[ stdin ]:31: setvar couldn't find matching 'var k2' (OILS-ERR-10)
ysh-cpp19 Dict (&d) { ... } converts frame to dict

[ysh-cpp stdout] Expected '', got '(Dict) {"k":"k-block-mutated","k2":"k2-block","k3":"k3","myglobal":"global"}\nk=k-shadowed\nk2=k2-shadowed\n'
[ysh-cpp status] Expected 0, got 2

stdout:
(Dict)   {"k":"k-block-mutated","k2":"k2-block","k3":"k3","myglobal":"global"}
k=k-shadowed
k2=k2-shadowed
stderr:
      setvar k2 = 'k2-proc'  # local, so it's checked
             ^~
[ stdin ]:31: setvar couldn't find matching 'var k2' (OILS-ERR-10)
ysh20 block in Dict (&d) { ... } can read from outer scope

[ysh status] Expected 0, got 1

stdout:
stderr: 
      y = x + 1  # x is from outer scope
          ^
[ stdin ]:10: fatal: Undefined variable 'x'
ysh-cpp20 block in Dict (&d) { ... } can read from outer scope

[ysh-cpp status] Expected 0, got 1

stdout:
stderr: 
      y = x + 1  # x is from outer scope
          ^
[ stdin ]:10: fatal: Undefined variable 'x'
ysh21 block in yb-capture Dict (&d) can read from outer scope

[ysh stdout] Expected '', got '(Dict) {"status":1,"stdout":""}\n'

stdout:
(Dict)   {"status":1,"stdout":""}
stderr:
      echo $[x + 1]
             ^
[ stdin ]:16: fatal: Undefined variable 'x'
ysh-cpp21 block in yb-capture Dict (&d) can read from outer scope

[ysh-cpp stdout] Expected '', got '(Dict) {"status":1,"stdout":""}\n'

stdout:
(Dict)   {"status":1,"stdout":""}
stderr:
      echo $[x + 1]
             ^
[ stdin ]:16: fatal: Undefined variable 'x'
ysh22 Dict (&d) and setvar

[ysh stdout] Expected '', got 'inside Dict block\n [frame_vars_] __rear__ outer2 outer not_declared\nproc Dict frame after evalToDict\n [frame_vars_] ARGV out block d\nDict outer=xx\n(Dict) {"outer2":"outer2","outer":"zz","not_declared":"yy"}\nafter outer=xx\nafter Dict\n [frame_vars_] ARGV OIL_VERSION OILS_VERSION LIB_OSH LIB_YSH NAN INFINITY IFS UID EUID PPID HOSTNAME OSTYPE OPTIND PS4 COMP_WORDBREAKS TMP REPO_ROOT PYTHONPATH PWD SH LC_ALL PATH LOCALE_ARCHIVE OILS_GC_ON_EXIT SHELLOPTS YSH_HISTFILE Dict outer d\n'

stdout:
inside Dict block
    [frame_vars_] __rear__ outer2 outer not_declared
proc Dict frame after evalToDict
    [frame_vars_] ARGV out block d
Dict outer=xx
(Dict)   {"outer2":"outer2","outer":"zz","not_declared":"yy"}
after outer=xx
after Dict
    [frame_vars_] ARGV OIL_VERSION OILS_VERSION LIB_OSH LIB_YSH NAN INFINITY IFS UID EUID PPID HOSTNAME OSTYPE OPTIND PS4 COMP_WORDBREAKS TMP REPO_ROOT PYTHONPATH PWD SH LC_ALL PATH LOCALE_ARCHIVE OILS_GC_ON_EXIT SHELLOPTS YSH_HISTFILE Dict outer d
stderr:
ysh-cpp22 Dict (&d) and setvar

[ysh-cpp stdout] Expected '', got 'inside Dict block\n [frame_vars_] __rear__ outer2 outer not_declared\nproc Dict frame after evalToDict\n [frame_vars_] ARGV out block d\nDict outer=xx\n(Dict) {"outer2":"outer2","outer":"zz","not_declared":"yy"}\nafter outer=xx\nafter Dict\n [frame_vars_] ARGV OIL_VERSION OILS_VERSION LIB_OSH LIB_YSH NAN INFINITY IFS UID EUID PPID HOSTNAME OSTYPE OPTIND PS4 COMP_WORDBREAKS TMP REPO_ROOT SH LC_ALL PATH LOCALE_ARCHIVE OILS_GC_ON_EXIT LINES COLUMNS SHELLOPTS PWD YSH_HISTFILE Dict outer d\n'

stdout:
inside Dict block
    [frame_vars_] __rear__ outer2 outer not_declared
proc Dict frame after evalToDict
    [frame_vars_] ARGV out block d
Dict outer=xx
(Dict)   {"outer2":"outer2","outer":"zz","not_declared":"yy"}
after outer=xx
after Dict
    [frame_vars_] ARGV OIL_VERSION OILS_VERSION LIB_OSH LIB_YSH NAN INFINITY IFS UID EUID PPID HOSTNAME OSTYPE OPTIND PS4 COMP_WORDBREAKS TMP REPO_ROOT SH LC_ALL PATH LOCALE_ARCHIVE OILS_GC_ON_EXIT LINES COLUMNS SHELLOPTS PWD YSH_HISTFILE Dict outer d
stderr: