1*13de33a5SJulio Merino# Note: this test depends on strerror() using locale. 2*13de33a5SJulio Merino 3*13de33a5SJulio Merinofailures=0 4*13de33a5SJulio Merino 5*13de33a5SJulio Merinocheck() { 6*13de33a5SJulio Merino if ! eval "[ $1 ]"; then 7*13de33a5SJulio Merino echo "Failed: $1 at $2" 8*13de33a5SJulio Merino : $((failures += 1)) 9*13de33a5SJulio Merino fi 10*13de33a5SJulio Merino} 11*13de33a5SJulio Merino 12*13de33a5SJulio Merinounset LANG LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME LC_MESSAGES 13*13de33a5SJulio Merinounset LANGUAGE 14*13de33a5SJulio Merino 15*13de33a5SJulio Merinomsgeng="No such file or directory" 16*13de33a5SJulio Merinomsgdut="Bestand of map niet gevonden" 17*13de33a5SJulio Merino 18*13de33a5SJulio Merino# Verify C locale error message. 19*13de33a5SJulio Merinocase $(command . /var/empty/foo 2>&1) in 20*13de33a5SJulio Merino *"$msgeng"*) ok=1 ;; 21*13de33a5SJulio Merino *) ok=0 ;; 22*13de33a5SJulio Merinoesac 23*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 24*13de33a5SJulio Merino 25*13de33a5SJulio Merino# Various locale variables that should not affect the message. 26*13de33a5SJulio Merinocase $(LC_ALL=C command . /var/empty/foo 2>&1) in 27*13de33a5SJulio Merino *"$msgeng"*) ok=1 ;; 28*13de33a5SJulio Merino *) ok=0 ;; 29*13de33a5SJulio Merinoesac 30*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 31*13de33a5SJulio Merino 32*13de33a5SJulio Merinocase $(LC_ALL=C LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in 33*13de33a5SJulio Merino *"$msgeng"*) ok=1 ;; 34*13de33a5SJulio Merino *) ok=0 ;; 35*13de33a5SJulio Merinoesac 36*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 37*13de33a5SJulio Merino 38*13de33a5SJulio Merinocase $(LC_ALL=C LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in 39*13de33a5SJulio Merino *"$msgeng"*) ok=1 ;; 40*13de33a5SJulio Merino *) ok=0 ;; 41*13de33a5SJulio Merinoesac 42*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 43*13de33a5SJulio Merino 44*13de33a5SJulio Merinocase $(LC_CTYPE=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in 45*13de33a5SJulio Merino *"$msgeng"*) ok=1 ;; 46*13de33a5SJulio Merino *) ok=0 ;; 47*13de33a5SJulio Merinoesac 48*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 49*13de33a5SJulio Merino 50*13de33a5SJulio Merino# Verify Dutch message. 51*13de33a5SJulio Merinocase $(export LANG=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in 52*13de33a5SJulio Merino *"$msgdut"*) ok=1 ;; 53*13de33a5SJulio Merino *) ok=0 ;; 54*13de33a5SJulio Merinoesac 55*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 56*13de33a5SJulio Merino 57*13de33a5SJulio Merinocase $(export LC_MESSAGES=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in 58*13de33a5SJulio Merino *"$msgdut"*) ok=1 ;; 59*13de33a5SJulio Merino *) ok=0 ;; 60*13de33a5SJulio Merinoesac 61*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 62*13de33a5SJulio Merino 63*13de33a5SJulio Merinocase $(export LC_ALL=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in 64*13de33a5SJulio Merino *"$msgdut"*) ok=1 ;; 65*13de33a5SJulio Merino *) ok=0 ;; 66*13de33a5SJulio Merinoesac 67*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 68*13de33a5SJulio Merino 69*13de33a5SJulio Merinocase $(LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in 70*13de33a5SJulio Merino *"$msgdut"*) ok=1 ;; 71*13de33a5SJulio Merino *) ok=0 ;; 72*13de33a5SJulio Merinoesac 73*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 74*13de33a5SJulio Merino 75*13de33a5SJulio Merinocase $(LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in 76*13de33a5SJulio Merino *"$msgdut"*) ok=1 ;; 77*13de33a5SJulio Merino *) ok=0 ;; 78*13de33a5SJulio Merinoesac 79*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 80*13de33a5SJulio Merino 81*13de33a5SJulio Merinocase $(LC_ALL=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in 82*13de33a5SJulio Merino *"$msgdut"*) ok=1 ;; 83*13de33a5SJulio Merino *) ok=0 ;; 84*13de33a5SJulio Merinoesac 85*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 86*13de33a5SJulio Merino 87*13de33a5SJulio Merino# Verify that command assignments do not set the locale persistently. 88*13de33a5SJulio Merinocase $(command . /var/empty/foo 2>&1) in 89*13de33a5SJulio Merino *"$msgeng"*) ok=1 ;; 90*13de33a5SJulio Merino *) ok=0 ;; 91*13de33a5SJulio Merinoesac 92*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 93*13de33a5SJulio Merino 94*13de33a5SJulio Merinocase $(LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in 95*13de33a5SJulio Merino *"$msgdut"*"$msgeng"*) ok=1 ;; 96*13de33a5SJulio Merino *) ok=0 ;; 97*13de33a5SJulio Merinoesac 98*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 99*13de33a5SJulio Merino 100*13de33a5SJulio Merinocase $(LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in 101*13de33a5SJulio Merino *"$msgdut"*"$msgeng"*) ok=1 ;; 102*13de33a5SJulio Merino *) ok=0 ;; 103*13de33a5SJulio Merinoesac 104*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 105*13de33a5SJulio Merino 106*13de33a5SJulio Merinocase $(LC_ALL=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in 107*13de33a5SJulio Merino *"$msgdut"*"$msgeng"*) ok=1 ;; 108*13de33a5SJulio Merino *) ok=0 ;; 109*13de33a5SJulio Merinoesac 110*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 111*13de33a5SJulio Merino 112*13de33a5SJulio Merino# Check special builtin; add colon invocation to avoid depending on certain fix. 113*13de33a5SJulio Merinocase $(LC_ALL=nl_NL.ISO8859-1 . /var/empty/foo 2>&1; :) in 114*13de33a5SJulio Merino *"$msgdut"*) ok=1 ;; 115*13de33a5SJulio Merino *) ok=0 ;; 116*13de33a5SJulio Merinoesac 117*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 118*13de33a5SJulio Merino 119*13de33a5SJulio Merino# Assignments on special builtins are exported to that builtin; the export 120*13de33a5SJulio Merino# is not persistent. 121*13de33a5SJulio Merinocase $(LC_ALL=nl_NL.ISO8859-1 . /dev/null; . /var/empty/foo 2>&1) in 122*13de33a5SJulio Merino *"$msgeng"*) ok=1 ;; 123*13de33a5SJulio Merino *) ok=0 ;; 124*13de33a5SJulio Merinoesac 125*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 126*13de33a5SJulio Merino 127*13de33a5SJulio Merinocase $(export LC_ALL; LC_ALL=nl_NL.ISO8859-1 . /dev/null; . /var/empty/foo 2>&1) in 128*13de33a5SJulio Merino *"$msgdut"*) ok=1 ;; 129*13de33a5SJulio Merino *) ok=0 ;; 130*13de33a5SJulio Merinoesac 131*13de33a5SJulio Merinocheck '$ok -eq 1' $LINENO 132*13de33a5SJulio Merino 133*13de33a5SJulio Merinoexit $((failures > 0)) 134