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

Results for ysh-assign.test.sh

statusyshysh-cpp
pass 1919
FAIL 22
total2121
caseyshysh-cppdescription
0pass pass proc static check: const can't be mutated
1pass pass top-level dynamic check: const can't be be mutated
2pass pass top level: var can be redefined by var/const
3pass pass setvar mutates local
4pass pass top level: setvar creates global
5pass pass top level: setvar mutates var
6pass pass proc static check: variable changed by setvar must be declared
7pass pass setglobal
8pass pass setglobal of undeclared var is allowed
9pass pass var a, b does implicit null init
10pass pass var x, y = f()
11pass pass const x, y = f()
12pass pass setvar x, y = 1, 2
13pass pass setvar to swap List and Dict elements
14pass pass setvar d.key = 42 (setitem)
15pass pass setvar mylist[1] = 42 (setitem)
16pass pass mixing assignment builtins and YSH assignment
17FAIL FAIL circular dict - TODO 2023-06 REGRESS
detailsdetails
18FAIL FAIL circular list - TODO 2023-06 REGRESS
detailsdetails
19pass pass exit code of var, const, setvar with command sub
20pass pass setvar obj[INVALID TYPE] =
38 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

ysh17 circular dict - TODO 2023-06 REGRESS

[ysh stdout] Expected "(OrderedDict) <'name': 'foo'>\n(OrderedDict) <'name': 123>\n(OrderedDict) <'name': 'mystr'>\n(OrderedDict) <'name': ...>\n" Got '(Dict) {"name":"foo"}\n(Dict) {"name":123}\n(Dict) {"name":"mystr"}\n(Dict) {"name":{ --> 0x7f6d4593ec68 }}\n'

stdout:
(Dict)   {"name":"foo"}
(Dict)   {"name":123}
(Dict)   {"name":"mystr"}
(Dict)   {"name":{ --> 0x7f6d4593ec68 }}
stderr:
ysh-cpp17 circular dict - TODO 2023-06 REGRESS

[ysh-cpp stdout] Expected "(OrderedDict) <'name': 'foo'>\n(OrderedDict) <'name': 123>\n(OrderedDict) <'name': 'mystr'>\n(OrderedDict) <'name': ...>\n" Got '(Dict) {"name":"foo"}\n(Dict) {"name":123}\n(Dict) {"name":"mystr"}\n(Dict) {"name":{ --> 0x18b9 }}\n'

stdout:
(Dict)   {"name":"foo"}
(Dict)   {"name":123}
(Dict)   {"name":"mystr"}
(Dict)   {"name":{ --> 0x18b9 }}
stderr:
ysh18 circular list - TODO 2023-06 REGRESS

[ysh stdout] Expected '(List) [1, 2, 3]\n(List) [[...], 2, 3]\n' Got '(List) [1, 2, 3]\n'

stdout:
(List)   [1, 2, 3]
stderr:
ysh-cpp18 circular list - TODO 2023-06 REGRESS

[ysh-cpp stdout] Expected '(List) [1, 2, 3]\n(List) [[...], 2, 3]\n' Got '(List) [1, 2, 3]\n'

stdout:
(List)   [1, 2, 3]
stderr: