Results for ysh-scope.test.sh

statusosh
pass 24
FAIL 2
total26
caseoshdescription
0pass GetValue scope and shopt --unset dynamic_scope
1pass SetValue scope and shopt --unset dynamic_scope
2pass read scope
3pass printf -v x respects dynamic_scope
4FAIL printf -v a[i] respects dynamic_scope
details
5pass ${undef=a} and shopt --unset dynamic_scope
6pass declare -p respects it
7pass OshLanguageSetValue constructs
8pass shell assignments 'neutered' inside 'proc'
9pass setglobal still allows setting globals
10pass setglobal d[key] inside proc should mutate global (bug #1841)
11pass setglobal a[i] inside proc
12pass setglobal a[i] += and d.key +=
13pass setglobal a[i] - i can be local or global
14pass unset inside proc - closures and dynamic scope
15pass unset composes when you turn on dynamic scope
16pass Temp Bindings
17pass cd blocks don't introduce new scopes
18pass shvar IFS=x { myproc } rather than IFS=x myproc - no dynamic scope
19pass shvar builtin syntax
20pass shvar and shvarGet() obey dynamic scope
21pass shvar global
22pass shvar local
23pass shvar IFS
24pass Compare shell func vs. proc, $IFS vs. shvarGet('IFS')
25FAIL func and proc are like var, with respect to closures
details
24 passed, 0 OK, 0 not implemented, 0 BUG, 2 failed, 0 timeouts, 0 cases skipped
2 failed under osh

Details on runs that didn't PASS

osh4 printf -v a[i] respects dynamic_scope

[osh stdout] Expected 'a[1]=42\na[1]=dynamic-scope\na[1]=\n---\na[1]=42\na[1]=42\na[1]=\n' Got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 959, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand
    run_flags)
  File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand
    cmd_val)
  File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable
    status = self.cmd_ev.RunProc(proc, cmd_val)
  File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc
    status = self._Execute(proc.body)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1820, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList
    status = self._Execute(child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1956, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/uke/oil/osh/word_eval.py", line 1661, in _EvalBracedVarSub
    val = self._EvalBracketOp(val, part, quoted, vsub_state, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1524, in _EvalBracketOp
    val = self._ArrayIndex(val, part, vtest_place)
  File "/home/uke/oil/osh/word_eval.py", line 1390, in _ArrayIndex
    s, error_code = bash_impl.BashArray_GetElement(
NameError: global name 'bash_impl' is not defined
osh25 func and proc are like var, with respect to closures

[osh stdout] Expected 'inner inner\nouter outer\n\ninner inner\nouter outer\n\ninner\nouter\n' Got 'inner inner\nouter outer\n\ninner inner\nouter inner\n\ninner\nouter\n'

stdout:
inner inner
outer outer

inner inner
outer inner

inner
outer
stderr: