[PATCH v2] string: Make tst-strerror/tst-strsignal unsupported if msgfmt is not installed
Carlos O'Donell
carlos@redhat.com
Thu Jul 9 18:35:12 GMT 2020
On 7/9/20 2:28 PM, Adhemerval Zanella via Libc-alpha wrote:
> 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.
> ---
> string/Makefile | 11 ++++++++++-
> string/tst-strerror.c | 3 +++
> string/tst-strsignal.c | 3 +++
> 3 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/string/Makefile b/string/Makefile
> index 206c9b103c..e958431f60 100644
> --- a/string/Makefile
> +++ b/string/Makefile
> @@ -65,7 +65,16 @@ tests := tester inl-tester noinl-tester testcopy test-ffs \
> test-endian-sign-conversion tst-memmove-overflow \
> 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
> +
> +ifneq ($(MSGFMT),:)
> +tests-container += $(tests-translation)
> +else
> +tests += $(tests-translation)
> +tests-unsupported += $(tests-translation)
> +endif
Does it work if we do this?
# Both tests require the .mo translation files generated by msgfmt.
tests-container += tst-strsignal tst-strerror
ifeq ($(MSGFMT),:)
tests-unsupported += $(tests-translation)
endif
Shorter and easier to read and understand.
>
> # This test allocates a lot of memory and can run for a long time.
> xtests = tst-strcoll-overflow
> diff --git a/string/tst-strerror.c b/string/tst-strerror.c
> index 3af51236d7..1fc202e4ea 100644
> --- a/string/tst-strerror.c
> +++ b/string/tst-strerror.c
> @@ -19,6 +19,7 @@
>
> #include <string.h>
> #include <stdio.h>
> +#include <stdlib.h>
> #include <errno.h>
> #include <locale.h>
> #include <array_length.h>
> @@ -29,6 +30,8 @@
> static int
> do_test (void)
> {
> + unsetenv ("LANGUAGE");
> +
> xsetlocale (LC_ALL, "C");
>
> TEST_COMPARE_STRING (strerror (EINVAL), "Invalid argument");
> diff --git a/string/tst-strsignal.c b/string/tst-strsignal.c
> index 3f6764989f..2c549f4620 100644
> --- a/string/tst-strsignal.c
> +++ b/string/tst-strsignal.c
> @@ -20,6 +20,7 @@
> #include <string.h>
> #include <stdio.h>
> #include <signal.h>
> +#include <stdlib.h>
> #include <locale.h>
> #include <array_length.h>
>
> @@ -29,6 +30,8 @@
> static int
> do_test (void)
> {
> + unsetenv ("LANGUAGE");
> +
> xsetlocale (LC_ALL, "C");
>
> TEST_COMPARE_STRING (strsignal (SIGINT), "Interrupt");
>
--
Cheers,
Carlos.
More information about the Libc-alpha
mailing list