Results for sh-func.test.sh

statusbashdashashzshmkshkshtoyshsushbrushosh
pass 1110101211111191011
ok 0200000000
BUG 1000100000
FAIL 0020011321
total12121212121212121212
casebashdashashzshmkshkshtoyshsushbrushoshdescription
0pass pass pass pass pass pass pass pass pass pass Locals don't leak
1pass pass pass pass pass pass pass pass pass pass Globals leak
2pass pass pass pass pass pass pass pass pass pass Return statement
3pass pass pass pass pass pass pass pass pass pass Dynamic Scope
4pass pass pass pass pass pass pass pass pass pass Dynamic Scope Mutation (wow this is bad)
5pass pass pass pass pass pass pass pass pass pass Assign local separately
6pass pass pass pass pass pass pass pass pass pass Assign a local and global on same line
7pass pass pass pass pass pass FAIL FAIL pass pass Return without args gives previous
detailsdetails
8BUG ok FAIL pass BUG FAIL pass FAIL FAIL pass return "" (a lot of disagreement)
detailsdetailsdetailsdetailsdetailsdetailsdetails
9pass pass pass pass pass pass pass pass pass pass return $empty
10pass pass pass pass pass pass pass FAIL pass FAIL Subshell function
detailsdetails
11pass ok FAIL pass pass pass pass pass FAIL pass Scope of global variable when sourced in function (Shell Functions aren't Closures)
detailsdetailsdetails
106 passed, 2 OK, 0 not implemented, 2 BUG, 10 failed, 0 timeouts, 0 cases skipped
1 failed under osh

Details on runs that didn't PASS

toysh7 Return without args gives previous

[toysh stdout] Expected 'status=42\n', got 'status=0\n'

stdout:
status=0
stderr:
sush7 Return without args gives previous

[sush stdout] Expected 'status=42\n', got 'status=0\n'

stdout:
status=0
stderr:
bash8 return "" (a lot of disagreement)

stdout:
f
status=2
stderr:
main: line 3: return: : numeric argument required
dash8 return "" (a lot of disagreement)

stdout:
f
stderr:
dash: 3: return: Illegal number: 
ash8 return "" (a lot of disagreement)

[ash stdout] Expected 'f\nstatus=0\n', got 'f\n'
[ash status] Expected 0, got 2

stdout:
f
stderr:
ash: return: line 3: Illegal number: 
mksh8 return "" (a lot of disagreement)

stdout:
f
status=1
stderr:
mksh: <stdin>[6]: return: : bad number
ksh8 return "" (a lot of disagreement)

[ksh stdout] Expected 'f\nstatus=0\n', got 'f\nstatus=1\n'

stdout:
f
status=1
stderr:
E: ksh: <stdin>[6]: return: bad number: 
sush8 return "" (a lot of disagreement)

[sush stdout] Expected 'f\nstatus=0\n', got 'f\nstatus=2\n'

stdout:
f
status=2
stderr:
sush: return: : numeric argument required
brush8 return "" (a lot of disagreement)

[brush stdout] Expected 'f\nstatus=0\n', got 'f\nstatus=2\n'

stdout:
f
status=2
stderr:
error: invalid value '' for '[CODE]': cannot parse integer from empty string

For more information, try '--help'.

sush10 Subshell function

[sush stdout] Expected 'status=42\nstatus=42\n', got 'status=0\nstatus=0\n'

stdout:
status=0
status=0
stderr:
osh10 Subshell function

[osh stdout] Expected 'status=42\nstatus=42\n', got 'status=42\n'
[osh status] Expected 0, got 1

stdout:
status=42
stderr:
  g() ( return 42 )
        ^~~~~~
[ stdin ]:2: fatal: Invalid control flow 'return' in pipeline / subshell / background
dash11 Scope of global variable when sourced in function (Shell Functions aren't Closures)

stdout:
g = global
stderr:
dash: 7: L: parameter not set
ash11 Scope of global variable when sourced in function (Shell Functions aren't Closures)

[ash status] Expected 1, got 2

stdout:
g = global
stderr:
ash: L: parameter not set
brush11 Scope of global variable when sourced in function (Shell Functions aren't Closures)

[brush stdout] Expected 'g = global\n', got 'g = global\nL = \n'
[brush status] Expected 1, got 0

stdout:
g = global
L = 
stderr: