vars-special () { run-file vars-special "$@" } run-file () { local spec_name=$1; shift; sh-spec spec/$spec_name.test.sh --compare-shells --oils-bin-dir $PWD/bin "$@" } vars-special: spec test case results

Results for vars-special.test.sh

statusdashbash-4mkshzshosh
pass 1738212735
ok 00131
N-I 2001340
BUG 10340
FAIL 00002
total3838383838
casedashbash-4mkshzshoshdescription
0pass pass pass pass pass $PWD is set
1pass pass BUG pass pass $PWD is not only set, but exported
details
2pass pass pass pass pass $PATH is set if unset at startup
3pass pass pass BUG pass $HOME is NOT set
details
4pass pass pass BUG pass $1 .. $9 are scoped, while $0 is not
details
5pass pass pass pass pass $?
6pass pass pass pass pass $#
7pass pass pass pass pass $$ looks like a PID
8pass pass pass pass pass $$ doesn't change with subshell or command sub
9N-I pass pass N-I pass $BASHPID DOES change with subshell and command sub
detailsdetails
10pass pass pass pass pass Background PID $! looks like a PID
11pass pass pass pass pass $PPID
12N-I pass pass N-I pass $PIPESTATUS
detailsdetails
13N-I pass pass pass FAIL $RANDOM
detailsdetails
14N-I pass N-I pass pass $UID and $EUID
detailsdetails
15N-I pass N-I pass pass $OSTYPE is non-empty
detailsdetails
16N-I pass N-I N-I pass $HOSTNAME
detailsdetailsdetails
17BUG pass pass BUG pass $LINENO is the current line, not line of function call
detailsdetails
18pass pass pass BUG pass $LINENO in "bare" redirect arg (bug regression)
details
19pass pass pass pass pass $LINENO in redirect arg (bug regression)
20N-I pass N-I pass pass $LINENO in [[
detailsdetails
21N-I pass pass pass pass $LINENO in ((
details
22pass pass ok pass pass $LINENO in for loop
details
23pass pass pass pass pass $LINENO in other for loops
24N-I pass BUG pass FAIL $LINENO in for (( loop
detailsdetailsdetails
25pass pass pass pass pass $LINENO for assignment
26pass pass BUG pass pass $LINENO in case
details
27N-I pass N-I pass pass $_ with simple command and evaluation
detailsdetails
28N-I pass N-I pass pass $_ and ${_}
detailsdetails
29N-I pass N-I pass pass $_ with word splitting
detailsdetails
30N-I pass N-I ok pass $_ with pipeline and subshell
detailsdetailsdetails
31N-I pass N-I pass pass $_ with && and ||
detailsdetails
32N-I pass N-I pass pass $_ is not reset with (( and [[
detailsdetails
33N-I pass N-I ok ok $_ with assignments, arrays, etc.
detailsdetailsdetailsdetails
34N-I pass N-I ok pass $_ with loop
detailsdetailsdetails
35N-I pass pass pass pass $_ is not undefined on first use
details
36N-I pass N-I N-I pass BASH_VERSION / OILS_VERSION
detailsdetailsdetails
37N-I pass pass pass pass $SECONDS
details
138 passed, 5 OK, 37 not implemented, 8 BUG, 2 failed, 0 timeouts, 0 cases skipped
2 failed under osh

Details on runs that didn't PASS

mksh1 $PWD is not only set, but exported

stdout:
stderr: 
zsh3 $HOME is NOT set

stdout:
zsh sets HOME
stderr:
zsh4 $1 .. $9 are scoped, while $0 is not

stdout:
a b
stderr:
dash9 $BASHPID DOES change with subshell and command sub

stdout:
stderr: 
empty BASHPID in parent
zsh9 $BASHPID DOES change with subshell and command sub

stdout:
stderr: 
empty BASHPID in parent
dash12 $PIPESTATUS

stdout:
stderr: 
dash: 2: Bad substitution
zsh12 $PIPESTATUS

stdout:
['']
stderr:
dash13 $RANDOM

stdout:
0
stderr:
osh13 $RANDOM

[osh status] Expected 0, got 1

stdout:
0
stderr:
dash14 $UID and $EUID

stdout:
stderr: 
mksh14 $UID and $EUID

stdout:
stderr: 
dash15 $OSTYPE is non-empty

stdout:
status=1
stderr:
mksh15 $OSTYPE is non-empty

stdout:
status=1
stderr:
dash16 $HOSTNAME

stdout:
status=1
stderr:
mksh16 $HOSTNAME

stdout:
status=1
stderr:
zsh16 $HOSTNAME

stdout:
status=1
stderr:
dash17 $LINENO is the current line, not line of function call

stdout:
1
['2']
['2']
['4']
stderr:
zsh17 $LINENO is the current line, not line of function call

stdout:
1
['1']
['1']
['3']
stderr:
zsh18 $LINENO in "bare" redirect arg (bug regression)

stdout:
stderr: 
dash20 $LINENO in [[

stdout:
one
stderr:
dash: 2: [[: not found
mksh20 $LINENO in [[

stdout:
one
stderr:
dash21 $LINENO in ((

stdout:
one

stderr:
dash: 2: x: not found
mksh22 $LINENO in for loop

stdout:
one
1
zzz
stderr:
dash24 $LINENO in for (( loop

stdout:
one
stderr:
dash: 2: Syntax error: Bad for loop variable
mksh24 $LINENO in for (( loop

stdout:
one
stderr:
mksh: <stdin>[2]: syntax error: '((' unexpected
osh24 $LINENO in for (( loop

[osh stdout] Expected 'one\n0\n1\n', got 'one\n0\n1\n2\n'

stdout:
one
0
1
2
stderr:
mksh26 $LINENO in case

stdout:
line=3
stderr:
dash27 $_ with simple command and evaluation

stdout:
hi world

stderr:
mksh27 $_ with simple command and evaluation

stdout:
hi world

stderr:
dash28 $_ and ${_}

stdout:
stderr: 
mksh28 $_ and ${_}

stdout:
stderr: 
dash29 $_ with word splitting

stdout:
stderr: 
mksh29 $_ with word splitting

stdout:
stderr: 
dash30 $_ with pipeline and subshell

stdout:
stderr: 
mksh30 $_ with pipeline and subshell

stdout:
stderr: 
zsh30 $_ with pipeline and subshell

stdout:
last=3
pipeline=last=3
subshell=
done=
stderr:
zsh: command not found: shopt
seq: write error: Broken pipe
dash31 $_ with && and ||

stdout:
stderr: 
mksh31 $_ with && and ||

stdout:
stderr: 
dash32 $_ is not reset with (( and [[

stdout:
stderr: 
mksh32 $_ is not reset with (( and [[

stdout:
stderr: 
dash33 $_ with assignments, arrays, etc.

stdout:
stderr: 
mksh33 $_ with assignments, arrays, etc.

stdout:
stderr: 
zsh33 $_ with assignments, arrays, etc.

stdout:
colon [foo]
bare assign []
declare [declare]
array [declare [declare]]
declare array [declare]
declare flag [-g]
stderr:
osh33 $_ with assignments, arrays, etc.

stdout:
colon [foo]
bare assign [colon [foo]]
declare [bare assign [colon [foo]]]
array [declare [bare assign [colon [foo]]]]
declare array [array [declare [bare assign [colon [foo]]]]]
declare flag [declare array [array [declare [bare assign [colon [foo]]]]]]
stderr:
dash34 $_ with loop

stdout:
stderr: 
mksh34 $_ with loop

stdout:
stderr: 
zsh34 $_ with loop

stdout:
init
begin=init
prev=
prev=prev=
prev=prev=prev=
stderr:
dash35 $_ is not undefined on first use

stdout:
stderr: 
dash: 1: _: parameter not set
dash36 BASH_VERSION / OILS_VERSION

stdout:
no version
stderr:
mksh36 BASH_VERSION / OILS_VERSION

stdout:
no version
stderr:
zsh36 BASH_VERSION / OILS_VERSION

stdout:
no version
stderr:
dash37 $SECONDS

stdout:
seconds=
stderr: