X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-utimens.c;h=f2a31a88eda612a3c5e9892fc7cc146a71e49509;hb=abe9c758009394a09d0cb84cdaae37e5752953f2;hp=5734a570a57654b489cbd61253d3a978720d3168;hpb=30dc6636ece9d1dbf8714f00c9758874733445a6;p=gnulib.git diff --git a/tests/test-utimens.c b/tests/test-utimens.c index 5734a570a..f2a31a88e 100644 --- a/tests/test-utimens.c +++ b/tests/test-utimens.c @@ -1,5 +1,5 @@ /* Tests of utimens. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009, 2010 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 @@ -24,21 +24,13 @@ #include #include -#define ASSERT(expr) \ - do \ - { \ - if (!(expr)) \ - { \ - fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ - fflush (stderr); \ - abort (); \ - } \ - } \ - while (0) +#include "ignore-value.h" +#include "macros.h" #define BASE "test-utimens.t" #include "test-futimens.h" +#include "test-lutimens.h" #include "test-utimens.h" /* Wrap gl_futimens to behave like futimens. */ @@ -57,7 +49,7 @@ do_fdutimens (char const *name, struct timespec const times[2]) if (fd < 0) fd = open (name, O_RDONLY); errno = 0; - result = gl_futimens (fd, name, times); + result = fdutimens (name, fd, times); if (0 <= fd) { int saved_errno = errno; @@ -68,12 +60,21 @@ do_fdutimens (char const *name, struct timespec const times[2]) } int -main () +main (void) { + int result1; /* Skip because of no symlink support. */ + int result2; /* Skip because of no futimens support. */ + int result3; /* Skip because of no lutimens support. */ + /* Clean up any trash from prior testsuite runs. */ - ASSERT (system ("rm -rf " BASE "*") == 0); + ignore_value (system ("rm -rf " BASE "*")); - ASSERT (test_utimens (utimens) == 0); - ASSERT (test_utimens (do_fdutimens) == 0); - return test_futimens (do_futimens, true); + result1 = test_utimens (utimens, true); + ASSERT (test_utimens (do_fdutimens, false) == result1); + /* Print only one skip message. */ + result2 = test_futimens (do_futimens, result1 == 0); + result3 = test_lutimens (lutimens, (result1 + result2) == 0); + /* We expect 0/0, 0/77, or 77/77, but not 77/0. */ + ASSERT (result1 <= result3); + return result1 | result2 | result3; }