run-file () { local spec_name=$1; shift; local spec_file=spec/$spec_name.test.sh; local suite; suite=$(test/sh_spec.py --print-spec-suite $spec_file); local spec_subdir; case $suite in osh) spec_subdir='osh-cpp' ;; ysh) spec_subdir='ysh-cpp' ;; *) die "Invalid suite $suite" ;; esac; local base_dir=_tmp/spec/$spec_subdir; mkdir -v -p $base_dir; sh-spec $spec_file --timeout 10 --oils-bin-dir $PWD/bin --oils-cpp-bin-dir $REPO_ROOT/_bin/cxx-asan --tsv-output $base_dir/${spec_name}.tsv "$@" } vars-special: spec test case results

Results for vars-special.test.sh

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

Details on runs that didn't PASS

osh13 $RANDOM

[osh status] Expected 0, got 1

stdout:
0
stderr:
osh-cpp13 $RANDOM

[osh-cpp status] Expected 0, got 99

stdout:
31
stderr:
osh24 $LINENO in for (( loop

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

stdout:
one
0
1
2
stderr:
osh-cpp24 $LINENO in for (( loop

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

stdout:
one
0
1
2
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:
osh-cpp33 $_ 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: