bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Test suite failure in clean chroot of ArchLinux


From: Letu Ren
Subject: Re: Test suite failure in clean chroot of ArchLinux
Date: Tue, 14 Jun 2022 16:11:10 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0

Thanks for the investigation. I cannot reproduce the issue, because I don't
know how you build your chroot environment. But anyway, with the details you
gave, I believe the following patch should fix the failure.


2022-06-06  Bruno Haible  <bruno@clisp.org>

        getlogin, getlogin_r tests: Avoid test failure in specific environments.
        Reported by Letu Ren <fantasquex@gmail.com> in
        <https://lists.gnu.org/archive/html/bug-gnulib/2022-06/msg00001.html>.
        * modules/getlogin-tests (Depends-on): Add stdbool.
        * modules/getlogin_r-tests (Depends-on): Likewise.
        * tests/test-getlogin.h: Include stdbool.h.
        (test_getlogin_result): On Linux, skip the test if /proc/self/loginuid
        contains "-1".

Thanks for the patch.I back-ported your patch and tested in ArchLinux chroot. It still failed because the type of /proc/self/loginuid is uid_t not string. You can check it through the link to glibc source code in the original mail. I made some changes based on your patch and tested the patch under ArchLinux x86_64 chroot.


* tests/test-getlogin.h (test_getlogin_result):
According to the source code of glibc, the type of /proc/self/loginuid is
uid_t, which is unsigned int.

Signed-off-by: Letu Ren <fantasquex@gmail.com>
---
 tests/test-getlogin.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/test-getlogin.h b/tests/test-getlogin.h
index 3489e3e03..b5ed8b572 100644
--- a/tests/test-getlogin.h
+++ b/tests/test-getlogin.h
@@ -58,9 +58,9 @@ test_getlogin_result (const char *buf, int err)
       FILE *fp = fopen ("/proc/self/loginuid", "r");
       if (fp != NULL)
         {
-          char buf[3];
+          uid_t uid;
           loginuid_undefined =
-            (fread (buf, 1, 3, fp) == 2 && buf[0] == '-' && buf[1] == '1');
+            (fscanf (fp, "%u", &uid) == 1 && uid == (uid_t) -1);
           fclose (fp);
         }
       if (loginuid_undefined)
--
2.36.1



reply via email to

[Prev in Thread] Current Thread [Next in Thread]