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

Results for unicode.test.sh

statusbashmkshzshosh
pass 7357
ok 0010
BUG 0410
total7777
casebashmkshzshoshdescription
0pass pass pass pass OSH source code doesn't have to be valid Unicode (like other shells)
1pass pass pass pass Unicode escapes \u03bc \U000003bc in $'', echo -e, printf
2pass BUG pass pass Max code point U+10ffff can escaped with $'' printf echo -e
details
3pass BUG pass pass $'' does NOT check that 0x110000 is too big at parse time
details
4pass pass ok pass $'' does not check for surrogate range at parse time
details
5pass BUG pass pass printf / echo -e do NOT check max code point at runtime
details
6pass BUG BUG pass printf / echo -e do NOT check surrogates at runtime
detailsdetails
22 passed, 1 OK, 0 not implemented, 5 BUG, 0 failed, 0 timeouts, 0 cases skipped

Details on runs that didn't PASS

mksh2 Max code point U+10ffff can escaped with $'' printf echo -e

stdout:
'\xef\xbf\xbd'
'\xef\xbf\xbd'
'\xf4\x8f\xbf\xbf'
stderr:
mksh3 $'' does NOT check that 0x110000 is too big at parse time

stdout:
'\xef\xbf\xbd'
stderr:
zsh4 $'' does not check for surrogate range at parse time

stdout:
stderr: 
zsh: character not in range
mksh5 printf / echo -e do NOT check max code point at runtime

stdout:
stderr: 
mksh6 printf / echo -e do NOT check surrogates at runtime

stdout:
stderr: 
zsh6 printf / echo -e do NOT check surrogates at runtime

stdout:
status=0
''
status=0
''
status=0
''
status=0
''
stderr:
zsh: character not in range
zsh: character not in range
zsh: character not in range
zsh: character not in range