1207678Sjilles# $FreeBSD$ 2207678Sjilles# Note: this test depends on strerror() using locale. 3207678Sjilles 4207678Sjillesfailures=0 5207678Sjilles 6207678Sjillescheck() { 7207678Sjilles if ! eval "[ $1 ]"; then 8207678Sjilles echo "Failed: $1 at $2" 9207678Sjilles : $((failures += 1)) 10207678Sjilles fi 11207678Sjilles} 12207678Sjilles 13207678Sjillesunset LANG LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME LC_MESSAGES 14218819Sjillesunset LANGUAGE 15207678Sjilles 16207678Sjillesmsgeng="No such file or directory" 17207678Sjillesmsgdut="Bestand of map niet gevonden" 18207678Sjilles 19207678Sjilles# Verify C locale error message. 20207678Sjillescase $(command . /var/empty/foo 2>&1) in 21207678Sjilles *"$msgeng"*) ok=1 ;; 22207678Sjilles *) ok=0 ;; 23207678Sjillesesac 24207678Sjillescheck '$ok -eq 1' $LINENO 25207678Sjilles 26207678Sjilles# Various locale variables that should not affect the message. 27207678Sjillescase $(LC_ALL=C command . /var/empty/foo 2>&1) in 28207678Sjilles *"$msgeng"*) ok=1 ;; 29207678Sjilles *) ok=0 ;; 30207678Sjillesesac 31207678Sjillescheck '$ok -eq 1' $LINENO 32207678Sjilles 33207678Sjillescase $(LC_ALL=C LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in 34207678Sjilles *"$msgeng"*) ok=1 ;; 35207678Sjilles *) ok=0 ;; 36207678Sjillesesac 37207678Sjillescheck '$ok -eq 1' $LINENO 38207678Sjilles 39207678Sjillescase $(LC_ALL=C LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in 40207678Sjilles *"$msgeng"*) ok=1 ;; 41207678Sjilles *) ok=0 ;; 42207678Sjillesesac 43207678Sjillescheck '$ok -eq 1' $LINENO 44207678Sjilles 45207678Sjillescase $(LC_CTYPE=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in 46207678Sjilles *"$msgeng"*) ok=1 ;; 47207678Sjilles *) ok=0 ;; 48207678Sjillesesac 49207678Sjillescheck '$ok -eq 1' $LINENO 50207678Sjilles 51207678Sjilles# Verify Dutch message. 52207678Sjillescase $(export LANG=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in 53207678Sjilles *"$msgdut"*) ok=1 ;; 54207678Sjilles *) ok=0 ;; 55207678Sjillesesac 56207678Sjillescheck '$ok -eq 1' $LINENO 57207678Sjilles 58207678Sjillescase $(export LC_MESSAGES=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in 59207678Sjilles *"$msgdut"*) ok=1 ;; 60207678Sjilles *) ok=0 ;; 61207678Sjillesesac 62207678Sjillescheck '$ok -eq 1' $LINENO 63207678Sjilles 64207678Sjillescase $(export LC_ALL=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in 65207678Sjilles *"$msgdut"*) ok=1 ;; 66207678Sjilles *) ok=0 ;; 67207678Sjillesesac 68207678Sjillescheck '$ok -eq 1' $LINENO 69207678Sjilles 70207678Sjillescase $(LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in 71207678Sjilles *"$msgdut"*) ok=1 ;; 72207678Sjilles *) ok=0 ;; 73207678Sjillesesac 74207678Sjillescheck '$ok -eq 1' $LINENO 75207678Sjilles 76207678Sjillescase $(LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in 77207678Sjilles *"$msgdut"*) ok=1 ;; 78207678Sjilles *) ok=0 ;; 79207678Sjillesesac 80207678Sjillescheck '$ok -eq 1' $LINENO 81207678Sjilles 82207678Sjillescase $(LC_ALL=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in 83207678Sjilles *"$msgdut"*) ok=1 ;; 84207678Sjilles *) ok=0 ;; 85207678Sjillesesac 86207678Sjillescheck '$ok -eq 1' $LINENO 87207678Sjilles 88207678Sjilles# Verify that command assignments do not set the locale persistently. 89207678Sjillescase $(command . /var/empty/foo 2>&1) in 90207678Sjilles *"$msgeng"*) ok=1 ;; 91207678Sjilles *) ok=0 ;; 92207678Sjillesesac 93207678Sjillescheck '$ok -eq 1' $LINENO 94207678Sjilles 95207678Sjillescase $(LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in 96207678Sjilles *"$msgdut"*"$msgeng"*) ok=1 ;; 97207678Sjilles *) ok=0 ;; 98207678Sjillesesac 99207678Sjillescheck '$ok -eq 1' $LINENO 100207678Sjilles 101207678Sjillescase $(LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in 102207678Sjilles *"$msgdut"*"$msgeng"*) ok=1 ;; 103207678Sjilles *) ok=0 ;; 104207678Sjillesesac 105207678Sjillescheck '$ok -eq 1' $LINENO 106207678Sjilles 107207678Sjillescase $(LC_ALL=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in 108207678Sjilles *"$msgdut"*"$msgeng"*) ok=1 ;; 109207678Sjilles *) ok=0 ;; 110207678Sjillesesac 111207678Sjillescheck '$ok -eq 1' $LINENO 112207678Sjilles 113207678Sjilles# Check special builtin; add colon invocation to avoid depending on certain fix. 114207678Sjillescase $(LC_ALL=nl_NL.ISO8859-1 . /var/empty/foo 2>&1; :) in 115207678Sjilles *"$msgdut"*) ok=1 ;; 116207678Sjilles *) ok=0 ;; 117207678Sjillesesac 118207678Sjillescheck '$ok -eq 1' $LINENO 119207678Sjilles 120207678Sjilles# Assignments on special builtins are exported to that builtin; the export 121207678Sjilles# is not persistent. 122207678Sjillescase $(LC_ALL=nl_NL.ISO8859-1 . /dev/null; . /var/empty/foo 2>&1) in 123207678Sjilles *"$msgeng"*) ok=1 ;; 124207678Sjilles *) ok=0 ;; 125207678Sjillesesac 126207678Sjillescheck '$ok -eq 1' $LINENO 127207678Sjilles 128207678Sjillescase $(export LC_ALL; LC_ALL=nl_NL.ISO8859-1 . /dev/null; . /var/empty/foo 2>&1) in 129207678Sjilles *"$msgdut"*) ok=1 ;; 130207678Sjilles *) ok=0 ;; 131207678Sjillesesac 132207678Sjillescheck '$ok -eq 1' $LINENO 133207678Sjilles 134207678Sjillesexit $((failures > 0)) 135