string: Make tst-strerror/tst-strsignal unsupported if msgfmt is not installed

Without msgfmt libc.mo files are not generated and its loading failure
is silent ignored with xsetlocale.

Also unset LANGUAGE environment variable to avoid it taking precedence
when loading the message catalog.  Although not strictly required
(since the test is issued with test-container and it sets a strict
environment variable) it follows other tests that deal with
translation.

Checked on x86_64-linux-gnu.
This commit is contained in:
Adhemerval Zanella 2020-07-09 13:24:04 -03:00
parent e72b98e6f8
commit 10b01bd452
3 changed files with 14 additions and 1 deletions

View File

@ -65,7 +65,14 @@ tests := tester inl-tester noinl-tester testcopy test-ffs \
test-endian-sign-conversion tst-memmove-overflow \ test-endian-sign-conversion tst-memmove-overflow \
test-sig_np test-sig_np
tests-container += tst-strsignal tst-strerror # Both tests require the .mo translation files generated by msgfmt.
tests-translation := tst-strsignal \
tst-strerror
tests-container += $(tests-translation)
ifeq ($(MSGFMT),:)
tests-unsupported += $(tests-translation)
endif
# This test allocates a lot of memory and can run for a long time. # This test allocates a lot of memory and can run for a long time.
xtests = tst-strcoll-overflow xtests = tst-strcoll-overflow

View File

@ -19,6 +19,7 @@
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <errno.h> #include <errno.h>
#include <locale.h> #include <locale.h>
#include <array_length.h> #include <array_length.h>
@ -29,6 +30,8 @@
static int static int
do_test (void) do_test (void)
{ {
unsetenv ("LANGUAGE");
xsetlocale (LC_ALL, "C"); xsetlocale (LC_ALL, "C");
TEST_COMPARE_STRING (strerror (EINVAL), "Invalid argument"); TEST_COMPARE_STRING (strerror (EINVAL), "Invalid argument");

View File

@ -20,6 +20,7 @@
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include <signal.h> #include <signal.h>
#include <stdlib.h>
#include <locale.h> #include <locale.h>
#include <array_length.h> #include <array_length.h>
@ -29,6 +30,8 @@
static int static int
do_test (void) do_test (void)
{ {
unsetenv ("LANGUAGE");
xsetlocale (LC_ALL, "C"); xsetlocale (LC_ALL, "C");
TEST_COMPARE_STRING (strsignal (SIGINT), "Interrupt"); TEST_COMPARE_STRING (strsignal (SIGINT), "Interrupt");