[v2] string: Make tst-strerror/tst-strsignal unsupported if msgfmt is not installed
Commit Message
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(-)
Comments
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");
>
On 09/07/2020 15:35, Carlos O'Donell wrote:
> 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.
It does and it is indeed simpler, thanks.
@@ -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
# This test allocates a lot of memory and can run for a long time.
xtests = tst-strcoll-overflow
@@ -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");
@@ -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");