changeset 17157:bb02af8a620b

getlogin_r-tests: allow errno == ENXIO or ENOENT * tests/test-getlogin.c (main): Skip tests if getlogin fails with errno == ENXIO (No controlling tty). * tests/test-getlogin_r.c (main): Skip tests if getlogin_r fails with errno == ENOENT. This was reported to happen in various situations on GNU/Linux.
author Pádraig Brady <P@draigBrady.com>
date Fri, 09 Nov 2012 11:55:25 +0000
parents 75c813b2d840
children b29b21191c61
files ChangeLog tests/test-getlogin.c tests/test-getlogin_r.c
diffstat 3 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2012-11-09  Pádraig Brady  <P@draigBrady.com>
+
+	getlogin-tests: allow errno == ENXIO
+	* tests/test-getlogin.c (main): Skip tests if getlogin fails
+	with errno == ENXIO (No controlling tty).
+	getlogin_r-tests: Likewise. Also allow errno == ENOENT
+	* tests/test-getlogin_r.c (main): Skip tests if getlogin_r fails
+	with errno == ENOENT.  This was reported to happen in various
+	situations on GNU/Linux.
+
 2012-11-09  Paul Eggert  <eggert@cs.ucla.edu>
 
 	getlogin-tests: allow errno == ENOENT
--- a/tests/test-getlogin.c
+++ b/tests/test-getlogin.c
@@ -49,6 +49,7 @@
       /* getlogin() fails when stdin is not connected to a tty.  */
       ASSERT (errno == ENOTTY
               || errno == EINVAL /* seen on Linux/SPARC */
+              || errno == ENXIO
              );
 #if !defined __hpux /* On HP-UX 11.11 it fails anyway.  */
       ASSERT (! isatty (0));
--- a/tests/test-getlogin_r.c
+++ b/tests/test-getlogin_r.c
@@ -40,9 +40,17 @@
   err = getlogin_r (buf, sizeof (buf));
   if (err != 0)
     {
+      if (errno == ENOENT)
+        {
+          /* This can happen on GNU/Linux.  */
+          fprintf (stderr, "Skipping test: no entry in utmp file.\n");
+          return 77;
+        }
+
       /* getlogin_r() fails when stdin is not connected to a tty.  */
       ASSERT (err == ENOTTY
               || errno == EINVAL /* seen on Linux/SPARC */
+              || errno == ENXIO
              );
 #if !defined __hpux /* On HP-UX 11.11 it fails anyway.  */
       ASSERT (! isatty (0));