diff --git a/src/cmd/ksh93/tests/variables.sh b/src/cmd/ksh93/tests/variables.sh index 7e0f02154..3eb164d33 100755 --- a/src/cmd/ksh93/tests/variables.sh +++ b/src/cmd/ksh93/tests/variables.sh @@ -736,15 +736,22 @@ unset r v x ) Errors=$? # ensure error count survives subshell ( - errmsg=$({ LANG=bad_LOCALE; } 2>&1) - x=x + # $x must be an unknown locale. + 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 do nameref r=$v unset $v [[ $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 ]] || err_exit "$v=$x failed -- expected locale diagnostic" + d=$($SHELL -c "$v=$x" 2>&1) + [[ $d ]] || err_exit "$v=$x failed -- expected locale diagnostic" { g=$( r=$x; print -- $r ); } 2>/dev/null [[ $g == '' ]] || err_exit "$v=$x failed -- expected '', got '$g'" { g=$( r=C; r=$x; print -- $r ); } 2>/dev/null