string: Do not run tst-strerror/tst-strsignal if msgfmt is not installed

Message ID 20200709163753.3357365-1-adhemerval.zanella@linaro.org
State Committed
Headers
Series string: Do not run tst-strerror/tst-strsignal if msgfmt is not installed |

Commit Message

Adhemerval Zanella July 9, 2020, 4:37 p.m. UTC
  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        | 3 +++
 string/tst-strerror.c  | 3 +++
 string/tst-strsignal.c | 3 +++
 3 files changed, 9 insertions(+)
  

Comments

Andreas Schwab July 9, 2020, 5:03 p.m. UTC | #1
On Jul 09 2020, Adhemerval Zanella via Libc-alpha wrote:

> diff --git a/string/Makefile b/string/Makefile
> index 206c9b103c..6d4f88ef36 100644
> --- a/string/Makefile
> +++ b/string/Makefile
> @@ -65,7 +65,10 @@ tests		:= tester inl-tester noinl-tester testcopy test-ffs	\
>  		   test-endian-sign-conversion tst-memmove-overflow	\
>  		   test-sig_np
>  
> +# Both tests requires the .mo translation files generated by msgfmt.

s/requires/require/

Andreas.
  
Adhemerval Zanella July 9, 2020, 5:06 p.m. UTC | #2
On 09/07/2020 14:03, Andreas Schwab wrote:
> On Jul 09 2020, Adhemerval Zanella via Libc-alpha wrote:
> 
>> diff --git a/string/Makefile b/string/Makefile
>> index 206c9b103c..6d4f88ef36 100644
>> --- a/string/Makefile
>> +++ b/string/Makefile
>> @@ -65,7 +65,10 @@ tests		:= tester inl-tester noinl-tester testcopy test-ffs	\
>>  		   test-endian-sign-conversion tst-memmove-overflow	\
>>  		   test-sig_np
>>  
>> +# Both tests requires the .mo translation files generated by msgfmt.
> 
> s/requires/require/
> 
> Andreas.
> 

Ack, fixed locally.
  
Carlos O'Donell July 9, 2020, 5:12 p.m. UTC | #3
On 7/9/20 12:37 PM, Adhemerval Zanella 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.

Please use tests-unsupported.

> ---
>  string/Makefile        | 3 +++
>  string/tst-strerror.c  | 3 +++
>  string/tst-strsignal.c | 3 +++
>  3 files changed, 9 insertions(+)
> 
> diff --git a/string/Makefile b/string/Makefile
> index 206c9b103c..6d4f88ef36 100644
> --- a/string/Makefile
> +++ b/string/Makefile
> @@ -65,7 +65,10 @@ tests		:= tester inl-tester noinl-tester testcopy test-ffs	\
>  		   test-endian-sign-conversion tst-memmove-overflow	\
>  		   test-sig_np
>  
> +# Both tests requires the .mo translation files generated by msgfmt.
> +ifneq ($(MSGFMT),:)

All tests should always be present in all configurations.

>  tests-container += tst-strsignal tst-strerror
> +endif

You need to use tests-unsupported to mark the tests as
unsupported.

>  
>  # 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");
>
  

Patch

diff --git a/string/Makefile b/string/Makefile
index 206c9b103c..6d4f88ef36 100644
--- a/string/Makefile
+++ b/string/Makefile
@@ -65,7 +65,10 @@  tests		:= tester inl-tester noinl-tester testcopy test-ffs	\
 		   test-endian-sign-conversion tst-memmove-overflow	\
 		   test-sig_np
 
+# Both tests requires the .mo translation files generated by msgfmt.
+ifneq ($(MSGFMT),:)
 tests-container += tst-strsignal tst-strerror
+endif
 
 # 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");