X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=inline;f=tests%2Ftest-futimens.h;h=648de67e040e5762b82a5717217899593e4dd55c;hb=9723bfe9bb9af8309314ad6230f7661000ba03b1;hp=f93b6b8b6c68f416335705387e50fded09afe17d;hpb=ba2d9dffa77a8a1ff255b51820d2d791c909e779;p=gnulib.git diff --git a/tests/test-futimens.h b/tests/test-futimens.h index f93b6b8b6..648de67e0 100644 --- a/tests/test-futimens.h +++ b/tests/test-futimens.h @@ -1,5 +1,5 @@ /* Test of file timestamp modification functions. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,7 +16,7 @@ #include "test-utimens-common.h" -/* This file is designed to test both gl_futimens(a,NULL,b) and +/* This file is designed to test both fdutimens(a,NULL,b) and futimens(a,b). FUNC is the function to test. Assumes that BASE and ASSERT are already defined. If PRINT, warn before skipping tests with status 77. */ @@ -54,9 +54,7 @@ test_futimens (int (*func) (int, struct timespec const *), source. */ ASSERT (0 <= utimecmp (BASE "file", &st2, &st1, UTIMECMP_TRUNCATE_SOURCE)); if (check_ctime) - ASSERT (st1.st_ctime < st2.st_ctime - || (st1.st_ctime == st2.st_ctime - && get_stat_ctime_ns (&st1) < get_stat_ctime_ns (&st2))); + ASSERT (ctime_compare (&st1, &st2) < 0); { /* On some NFS systems, the 'now' timestamp of creat or a NULL timespec is determined by the server, but the 'now' timestamp @@ -74,9 +72,29 @@ test_futimens (int (*func) (int, struct timespec const *), } /* Invalid arguments. */ - errno = 0; - ASSERT (func (AT_FDCWD, NULL) == -1); - ASSERT (errno == EBADF); + { + errno = 0; + ASSERT (func (AT_FDCWD, NULL) == -1); + ASSERT (errno == EBADF); + } + { + errno = 0; + ASSERT (func (-1, NULL) == -1); + ASSERT (errno == EBADF); + } + { + errno = 0; + ASSERT (func (99, NULL) == -1); + ASSERT (errno == EBADF); + } + { + int fd0 = dup (0); + ASSERT (0 <= fd0); + ASSERT (close (fd0) == 0); + errno = 0; + ASSERT (func (fd0, NULL) == -1); + ASSERT (errno == EBADF); + } { struct timespec ts[2] = { { Y2K, UTIME_BOGUS_POS }, { Y2K, 0 } }; errno = 0; @@ -106,9 +124,7 @@ test_futimens (int (*func) (int, struct timespec const *), ASSERT (0 <= get_stat_mtime_ns (&st2)); ASSERT (get_stat_mtime_ns (&st2) < BILLION); if (check_ctime) - ASSERT (st1.st_ctime < st2.st_ctime - || (st1.st_ctime == st2.st_ctime - && get_stat_ctime_ns (&st1) < get_stat_ctime_ns (&st2))); + ASSERT (ctime_compare (&st1, &st2) < 0); } /* Play with UTIME_OMIT, UTIME_NOW. */ @@ -123,9 +139,7 @@ test_futimens (int (*func) (int, struct timespec const *), ASSERT (get_stat_atime_ns (&st3) <= BILLION / 2); ASSERT (utimecmp (BASE "file", &st1, &st3, 0) <= 0); if (check_ctime) - ASSERT (st2.st_ctime < st3.st_ctime - || (st2.st_ctime == st3.st_ctime - && get_stat_ctime_ns (&st2) < get_stat_ctime_ns (&st3))); + ASSERT (ctime_compare (&st2, &st3) < 0); nap (); ts[0].tv_nsec = 0; ts[1].tv_nsec = UTIME_OMIT; @@ -136,9 +150,7 @@ test_futimens (int (*func) (int, struct timespec const *), ASSERT (st3.st_mtime == st2.st_mtime); ASSERT (get_stat_mtime_ns (&st3) == get_stat_mtime_ns (&st2)); if (check_ctime) - ASSERT (st3.st_ctime < st2.st_ctime - || (st3.st_ctime == st2.st_ctime - && get_stat_ctime_ns (&st3) < get_stat_ctime_ns (&st2))); + ASSERT (ctime_compare (&st3, &st2) < 0); } /* Cleanup. */