[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