On Android 11, when I run the unit tests of a testdir: - './test-login_tty' yields "login_tty failed". - 'make check TESTS=test-login_tty' yields "Aborted". To get more information about the second case, I'm making this change. "tcgetsid(0) = -1 and errno = 13" is more information than nothing.
2023-01-13 Bruno Haible <br...@clisp.org> login_tty tests: Be more verbose when the test fails. * tests/test-login_tty.c (main): When the test fails, write a message into a file. diff --git a/tests/test-login_tty.c b/tests/test-login_tty.c index 7ed09f048b..294b46d63c 100644 --- a/tests/test-login_tty.c +++ b/tests/test-login_tty.c @@ -53,7 +53,8 @@ main () } /* From here on, we cannot use stderr for error messages any more. - If a test fails, just abort. */ + If a test fails, write error information into a file named 'err', + then abort. */ /* Check that fd = 0, 1, 2 are now open to the controlling terminal for the current process and that it is a session of its own. */ @@ -61,12 +62,38 @@ main () int fd; for (fd = 0; fd < 3; fd++) if (!(tcgetpgrp (fd) == getpid ())) - abort (); + { + freopen ("err", "w+", stderr); + fprintf (stderr, "tcgetpgrp(%d) = %ld whereas getpid() = %ld\n", + fd, (long) tcgetpgrp (fd), (long) getpid ()); + fflush (stderr); + abort (); + } for (fd = 0; fd < 3; fd++) { pid_t sid = tcgetsid (fd); - if (!(sid == -1 ? errno == ENOSYS : sid == getpid ())) - abort (); + if (sid == -1) + { + if (!(errno == ENOSYS)) + { + freopen ("err", "w+", stderr); + fprintf (stderr, "tcgetsid(%d) = -1 and errno = %d\n", + fd, errno); + fflush (stderr); + abort (); + } + } + else + { + if (!(sid == getpid ())) + { + freopen ("err", "w+", stderr); + fprintf (stderr, "tcgetsid(%d) = %ld whereas getpid() = %ld\n", + fd, (long) tcgetsid (fd), (long) getpid ()); + fflush (stderr); + abort (); + } + } } }