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 "$@" } toysh-posix: spec test case results

Results for toysh-posix.test.sh

statusoshosh-cpp
pass 1717
ok 22
FAIL 33
total2222
caseoshosh-cppdescription
0pass pass Fatal error
1ok ok setting readonly var (bash is only one where it's non-fatal)
detailsdetails
2ok ok readonly with temp binding
detailsdetails
3pass pass Failed redirect in assignment, vs. export
4FAIL FAIL Evaluation order of redirect and ${undef?error}
detailsdetails
5pass pass Function def in pipeline
6pass pass dynamic glob - http://landley.net/notes.html#08-05-2020
7pass pass no shebang
8pass pass IFS
9pass pass shift is fatal at top level?
10pass pass var and func - http://landley.net/notes.html#19-03-2020
11pass pass IFS - http://landley.net/notes.html#05-03-2020
12pass pass for loop parsing - http://landley.net/notes.html#04-03-2020
13pass pass Parsing $(( ))
14FAIL FAIL IFS - http://landley.net/notes.html#15-02-2020 (TODO: osh)
detailsdetails
15FAIL FAIL IFS 2 (TODO: osh)
detailsdetails
16pass pass IFS 3
17pass pass IFS 4
18pass pass IFS 5
19pass pass Can't parse extra }
20pass pass Command Sub Syntax Error
21pass pass Pipeline - http://landley.net/notes-2019.html#16-12-2019
34 passed, 4 OK, 0 not implemented, 0 BUG, 3 failed, 0 timeouts, 0 cases skipped
3 failed under osh

Details on runs that didn't PASS

osh1 setting readonly var (bash is only one where it's non-fatal)

stdout:
stderr: 
  abc=def
  ^~~~
[ stdin ]:2: fatal: Can't assign to readonly value 'abc'
osh-cpp1 setting readonly var (bash is only one where it's non-fatal)

stdout:
stderr: 
  abc=def
  ^~~~
[ stdin ]:2: fatal: Can't assign to readonly value 'abc'
osh2 readonly with temp binding

stdout:
one
status=0
hello
stderr:
  echo potato < /does/not/exist || echo hello
              ^
[ stdin ]:5: Can't open '/does/not/exist': No such file or directory
[ stdin ]:5: I/O error applying redirect: No such file or directory
osh-cpp2 readonly with temp binding

stdout:
one
status=0
hello
stderr:
  echo potato < /does/not/exist || echo hello
              ^
[ stdin ]:5: Can't open '/does/not/exist': No such file or directory
[ stdin ]:5: I/O error applying redirect: No such file or directory
osh4 Evaluation order of redirect and ${undef?error}

[osh stdout] Expected 'exists1\n', got 'exists1\nexists2\n'

stdout:
exists1
exists2
stderr:
rm: cannot remove '_tmp': Is a directory
  X=${x?bc} > walrus
      ^
[ -c flag ]:1: fatal: Var x is unset: 'bc'
  >walrus echo ${a?bc}
                 ^
[ -c flag ]:1: fatal: Var a is unset: 'bc'
osh-cpp4 Evaluation order of redirect and ${undef?error}

[osh-cpp stdout] Expected 'exists1\n', got 'exists1\nexists2\n'

stdout:
exists1
exists2
stderr:
rm: cannot remove '_tmp': Is a directory
  X=${x?bc} > walrus
      ^
[ -c flag ]:1: fatal: Var x is unset: 'bc'
  >walrus echo ${a?bc}
                 ^
[ -c flag ]:1: fatal: Var a is unset: 'bc'
osh14 IFS - http://landley.net/notes.html#15-02-2020 (TODO: osh)

[osh stdout] Expected '==\n=abc=\n==\n==\n=abc=\n=def=\n==\n', got '==\n=abc=\n==\n=abc=\n=def=\n'

stdout:
==
=abc=
==
=abc=
=def=
stderr:
osh-cpp14 IFS - http://landley.net/notes.html#15-02-2020 (TODO: osh)

[osh-cpp stdout] Expected '==\n=abc=\n==\n==\n=abc=\n=def=\n==\n', got '==\n=abc=\n==\n=abc=\n=def=\n'

stdout:
==
=abc=
==
=abc=
=def=
stderr:
osh15 IFS 2 (TODO: osh)

[osh stdout] Expected '=x=\n=abc=\n=def=\n==\n', got '=x=\n=abc=\n=def=\n'

stdout:
=x=
=abc=
=def=
stderr:
  this one appears different between osh and bash
  ^~~~
[ stdin ]:1: 'this' not found (OILS-ERR-100)
osh-cpp15 IFS 2 (TODO: osh)

[osh-cpp stdout] Expected '=x=\n=abc=\n=def=\n==\n', got '=x=\n=abc=\n=def=\n'

stdout:
=x=
=abc=
=def=
stderr:
  this one appears different between osh and bash
  ^~~~
[ stdin ]:1: 'this' not found (OILS-ERR-100)