X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-utimens.c;h=319900d51a9b2e1e7582bc425cbc5d207647f2ea;hb=f462d86108d41b1ca0f48b51caad6c696d67d8fd;hp=e43663a122a62de8a032dfa5ddcbbcfae787491f;hpb=aba351689b1b5ce068b76d112c1f4929ac26ab9c;p=gnulib.git diff --git a/tests/test-utimens.c b/tests/test-utimens.c index e43663a12..319900d51 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-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 @@ -24,17 +24,8 @@ #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" @@ -42,11 +33,11 @@ #include "test-lutimens.h" #include "test-utimens.h" -/* Wrap gl_futimens to behave like futimens. */ +/* Wrap fdutimens to behave like futimens. */ static int do_futimens (int fd, struct timespec const times[2]) { - return gl_futimens (fd, NULL, times); + return fdutimens (fd, NULL, times); } /* Test the use of file descriptors alongside a name. */ @@ -58,7 +49,7 @@ do_fdutimens (char const *name, struct timespec const times[2]) if (fd < 0) fd = open (name, O_RDONLY); errno = 0; - result = fdutimens (name, fd, times); + result = fdutimens (fd, name, times); if (0 <= fd) { int saved_errno = errno; @@ -69,22 +60,21 @@ do_fdutimens (char const *name, struct timespec const times[2]) } int -main () +main (void) { - int result1; - int result2; + 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); - result1 = test_futimens (do_futimens, true); - if (result1) - ASSERT (result1 == 77); + result1 = test_utimens (utimens, true); + ASSERT (test_utimens (do_fdutimens, false) == result1); /* Print only one skip message. */ - result2 = test_lutimens (lutimens, result1 == 0); - if (result2) - ASSERT (result2 == 77); - return result1 | result2; + 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; }