initial commit
[glibc.git] / locale / tst-locale-locpath.sh
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
20 set -ex
21
22 common_objpfx=$1
23 test_wrapper_env=$2
24 run_program_env=$3
25
26 LIBPATH="$common_objpfx"
27
28 testroot="${common_objpfx}locale/tst-locale-locpath-directory"
29 cleanup () {
30 rm -rf "$testroot"
31 }
32 trap cleanup 0
33
34 rm -rf "$testroot"
35 mkdir -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
43 echo "* standard error"
44 cat "$testroot/stderr"
45 echo "* standard output"
46 cat "$testroot/stdout"
47
48 cat > "$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
52 warning: The LOCPATH variable is set to "does-not-exist"
53 EOF
54
55 cat > "$testroot/stdout-expected" <<EOF
56 LANG=
57 LANGUAGE=
58 LC_CTYPE="invalid-locale"
59 LC_NUMERIC="invalid-locale"
60 LC_TIME="invalid-locale"
61 LC_COLLATE="invalid-locale"
62 LC_MONETARY="invalid-locale"
63 LC_MESSAGES="invalid-locale"
64 LC_PAPER="invalid-locale"
65 LC_NAME="invalid-locale"
66 LC_ADDRESS="invalid-locale"
67 LC_TELEPHONE="invalid-locale"
68 LC_MEASUREMENT="invalid-locale"
69 LC_IDENTIFICATION="invalid-locale"
70 LC_ALL=invalid-locale
71 EOF
72
73 errors=0
74 if ! cmp -s "$testroot/stderr-expected" "$testroot/stderr" ; then
75 echo "error: standard error not correct"
76 errors=1
77 fi
78 if ! cmp -s "$testroot/stdout-expected" "$testroot/stdout" ; then
79 echo "error: standard output not correct"
80 errors=1
81 fi
82 exit $errors