1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00

tests/variables.sh: Fix locale tests (#247)

src/cmd/ksh93/tests/variables.sh: LC_* error tests:
- Since operating systems validate locale strings differently,
  try a few different bad locale strings to find one that makes
  setlocale(2) fail, fixing test failures on OpenBSD and Debian.
- Restore warning removed in aed5c6d7, issuing it if none of the
  bad locale strings produce a diagnostic.
- Reenable test for diagnostic message disabled in aed5c6d7.

Co-authored-by: Martijn Dekker <martijn@inlv.org>
This commit is contained in:
Johnothan King 2021-03-30 06:53:08 -07:00 committed by GitHub
parent 113a9392ff
commit f66a10a8c3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -736,15 +736,22 @@ unset r v x
) )
Errors=$? # ensure error count survives subshell Errors=$? # ensure error count survives subshell
( (
errmsg=$({ LANG=bad_LOCALE; } 2>&1) # $x must be an unknown locale.
x=x for x in x x.b@d xx_XX xx_XX.b@d
do errmsg=$({ LANG=$x; } 2>&1)
[[ -n $errmsg ]] && break
done
if [[ -z $errmsg ]]
then warning "C library does not seem to verify locales: skipping LC_* tests"
exit $Errors
fi
for v in LC_ALL LC_CTYPE LC_MESSAGES LC_COLLATE LC_NUMERIC for v in LC_ALL LC_CTYPE LC_MESSAGES LC_COLLATE LC_NUMERIC
do nameref r=$v do nameref r=$v
unset $v unset $v
[[ $r ]] && err_exit "unset $v failed -- expected '', got '$r'" [[ $r ]] && err_exit "unset $v failed -- expected '', got '$r'"
# Test disabled: some system libraries do not verify the locale, so no diagnostic is printed. d=$($SHELL -c "$v=$x" 2>&1)
#d=$($SHELL -c "$v=$x" 2>&1) [[ $d ]] || err_exit "$v=$x failed -- expected locale diagnostic"
#[[ $d ]] || err_exit "$v=$x failed -- expected locale diagnostic"
{ g=$( r=$x; print -- $r ); } 2>/dev/null { g=$( r=$x; print -- $r ); } 2>/dev/null
[[ $g == '' ]] || err_exit "$v=$x failed -- expected '', got '$g'" [[ $g == '' ]] || err_exit "$v=$x failed -- expected '', got '$g'"
{ g=$( r=C; r=$x; print -- $r ); } 2>/dev/null { g=$( r=C; r=$x; print -- $r ); } 2>/dev/null