X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-getlogin_r.c;h=68c681232b874d179ff472d2f8dd41fb4ea277b5;hb=833bff3a531e4730779f8c7be1d9f7c471e6f221;hp=f716ab952b9a7663d35fa0933f7b775415bbd29c;hpb=dd5823d49cf74819742b51ff48044ebe1adbd834;p=gnulib.git diff --git a/tests/test-getlogin_r.c b/tests/test-getlogin_r.c index f716ab952..68c681232 100644 --- a/tests/test-getlogin_r.c +++ b/tests/test-getlogin_r.c @@ -24,6 +24,7 @@ SIGNATURE_CHECK (getlogin_r, int, (char *, size_t)); #include +#include #include #include @@ -35,7 +36,13 @@ main (void) /* Test with a large enough buffer. */ char buf[1024]; - ASSERT (getlogin_r (buf, sizeof (buf)) == 0); + if (getlogin_r (buf, sizeof (buf)) != 0) + { + /* getlogin_r() fails when stdin is not connected to a tty. */ + ASSERT (! isatty (0)); + fprintf (stderr, "Skipping test: stdin is not a tty.\n"); + return 77; + } /* Compare against the value from the environment. */ #if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) @@ -69,5 +76,13 @@ main (void) ASSERT (getlogin_r (smallbuf, i) == ERANGE); } + /* Test with a huge buffer. */ + { + static char hugebuf[70000]; + + ASSERT (getlogin_r (hugebuf, sizeof (hugebuf)) == 0); + ASSERT (strcmp (hugebuf, buf) == 0); + } + return 0; }