1#!/bin/sh 2# Test that locale prints LOCPATH on failure. 3# Copyright (C) 2019-2022 Free Software Foundation, Inc. 4# This file is part of the GNU C Library. 5 6# The GNU C Library is free software; you can redistribute it and/or 7# modify it under the terms of the GNU Lesser General Public 8# License as published by the Free Software Foundation; either 9# version 2.1 of the License, or (at your option) any later version. 10 11# The GNU C Library is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14# Lesser General Public License for more details. 15 16# You should have received a copy of the GNU Lesser General Public 17# License along with the GNU C Library; if not, see 18# <https://www.gnu.org/licenses/>. 19 20set -ex 21 22common_objpfx=$1 23test_wrapper_env=$2 24run_program_env=$3 25 26LIBPATH="$common_objpfx" 27 28testroot="${common_objpfx}locale/tst-locale-locpath-directory" 29cleanup () { 30 rm -rf "$testroot" 31} 32trap cleanup 0 33 34rm -rf "$testroot" 35mkdir -p $testroot 36 37${test_wrapper_env} \ 38${run_program_env} LANG= LC_ALL=invalid-locale LOCPATH=does-not-exist \ 39${common_objpfx}elf/ld.so --library-path "$LIBPATH" \ 40 "${common_objpfx}locale/locale" \ 41 > "$testroot/stdout" 2> "$testroot/stderr" 42 43echo "* standard error" 44cat "$testroot/stderr" 45echo "* standard output" 46cat "$testroot/stdout" 47 48cat > "$testroot/stderr-expected" <<EOF 49${common_objpfx}locale/locale: Cannot set LC_CTYPE to default locale: No such file or directory 50${common_objpfx}locale/locale: Cannot set LC_MESSAGES to default locale: No such file or directory 51${common_objpfx}locale/locale: Cannot set LC_ALL to default locale: No such file or directory 52warning: The LOCPATH variable is set to "does-not-exist" 53EOF 54 55cat > "$testroot/stdout-expected" <<EOF 56LANG= 57LC_CTYPE="invalid-locale" 58LC_NUMERIC="invalid-locale" 59LC_TIME="invalid-locale" 60LC_COLLATE="invalid-locale" 61LC_MONETARY="invalid-locale" 62LC_MESSAGES="invalid-locale" 63LC_PAPER="invalid-locale" 64LC_NAME="invalid-locale" 65LC_ADDRESS="invalid-locale" 66LC_TELEPHONE="invalid-locale" 67LC_MEASUREMENT="invalid-locale" 68LC_IDENTIFICATION="invalid-locale" 69LC_ALL=invalid-locale 70EOF 71 72errors=0 73if ! cmp -s "$testroot/stderr-expected" "$testroot/stderr" ; then 74 echo "error: standard error not correct" 75 errors=1 76fi 77if ! cmp -s "$testroot/stdout-expected" "$testroot/stdout" ; then 78 echo "error: standard output not correct" 79 errors=1 80fi 81exit $errors 82