1
0
mirror of https://git.savannah.gnu.org/git/gnulib.git synced 2025-08-17 12:41:05 +03:00
Commit Graph

16 Commits

Author SHA1 Message Date
Daiki Ueno
914feb672c utimens-tests: avoid pulling gettext .m4 files
Although this is not the right fix to the original problem:
http://lists.gnu.org/archive/html/bug-gnulib/2013-01/msg00086.html
it makes it possible again for consumer projects to use arbitrary
version of gettext, through the steps described at:
http://www.gnu.org/software/gnulib/manual/html_node/gettextize-and-autopoint.html
See here for details:
https://lists.gnu.org/archive/html/bug-gnulib/2016-01/msg00079.html
* modules/futimens-tests (Depends-on): Add 'gettext-h' in place of
'gettext'.
* modules/utimens-tests (Depends-on): Add 'gettext-h' in place of
'gettext'.
2016-01-19 10:30:25 +09:00
Paul Eggert
5191133e01 utimensat-tests, etc.: try to fix some races
Problem reported by Bernhard Voelker in
<http://lists.gnu.org/archive/html/bug-gnulib/2013-04/msg00071.html>.
I don't know whether this patch fixes that race condition, but it
fixes *some* race conditions, so it should be a win.
* modules/chown-tests (Depends-on):
* modules/fchownat-tests (Depends-on):
* modules/fdutimensat-tests (Depends-on):
* modules/futimens-tests (Depends-on):
* modules/lchown-tests (Depends-on):
* modules/stat-time-tests (Depends-on):
* modules/utimens-tests (Depends-on):
* modules/utimensat-tests (Depends-on):
Depend on nanosleep, not usleep.
* modules/chown-tests (test_chown_LDADD):
* modules/lchown-tests (test_lchown_LDADD):
* modules/stat-time-tests (test_stat_time_LDADD):
New macro.
* modules/fchownat-tests (test_fchownat_LDADD):
* modules/fdutimensat-tests (test_fdutimensat_LDADD):
* modules/futimens-tests (test_futimens_LDADD):
* modules/utimens-tests (test_utimens_LDADD):
* modules/utimensat-tests (test_utimensat_LDADD):
Add $(LIB_NANOSLEEP).
* modules/stat-time-tests (Files): Add tests/nap.h.
* tests/nap.h: Include <limits.h>, for INT_MAX.
(lt_mtime): Remove.
(diff_timespec): New function.
(get_stat): Rename from get_mtime.  All callers changed.
(nap_works): Determine the needed delay by inspecting the
file system's timestamp jumps; this should be more reliable.
Look at both mtime and ctime, and take the maximum of the two jumps.
(nap_works, guess_delay):
Return a nanosecond cound, not a microsecond count.
All callers changed.
(nap_works, nap): Use nanosleep, not usleep.  Check for nanosleep
failure.
(nap): Multiply the guess by 1.125, to accommodate the case where
the file system's clock is a bit slower than nanosleep's clock.
* tests/test-stat-time.c (BASE): New macro.
Include nap.h.
(nap): Remove; nap.h now defines this.  This removes a duplicate
implementation of 'nap'.
2013-04-30 23:14:41 -07:00
Paul Eggert
fd040ac684 futimens-tests, utimens-tests: Depend on gettext.
This works around a problem introduced in my 2013-01-12 patch,
which added @LIBINTL@ to these modules.
* modules/futimens-tests (Depends-on):
* modules/utimens-tests (Depends-on): Add gettext.
2013-01-27 11:41:26 -08:00
Paul Eggert
41dca6474b c-xvasprintf etc.: fix link errors on older Solaris
These need to link with @LIBINTL@ to get libintl_gettext.
Problem reported by Tom G. Christensen in
<http://lists.gnu.org/archive/html/bug-gnulib/2013-01/msg00086.html>.
* modules/c-xvasprintf-tests (test_c_xvasprintf_LDADD):
* modules/readtokens-tests (test_readtokens_LDADD): New macros.
* modules/futimens-tests (test_futimens_LDADD):
* modules/utimens-tests (test_utimens_LDADD): Add @LIBINTL@.
2013-01-12 21:49:34 -08:00
Paul Eggert
a267084c25 utimens-tests: avoid unnecessary 'inline'
* modules/fdutimensat-tests (configure.ac):
* modules/futimens-tests (configure.ac):
* modules/utimens-tests (configure.ac):
* modules/utimensat-tests (configure.ac):
Remove AC_C_INLINE.
* tests/test-utimens-common.h (ctime_compare):
No longer inline.  Simplicity and portability trump efficiency here.
2012-09-22 01:58:22 -07:00
Bruno Haible
be965b0897 Ensure 'inline' can be used in tests/test-utimens-common.h.
* modules/fdutimensat-tests (configure.ac): Require AC_C_INLINE.
* modules/futimens-tests (configure.ac): Likewise.
* modules/utimens-tests (configure.ac): Likewise.
* modules/utimensat-tests (configure.ac): Likewise.
2011-11-19 17:29:36 +01:00
Bruno Haible
4810e2dc1d New module 'dup'.
* lib/unistd.in.h (dup): Declare only if the 'dup' module is in use.
Allow replacement.
* lib/dup.c: New file.
* lib/fchdir.c (rpl_dup): Remove function.
* m4/dup.m4: New file.
* m4/fchdir.m4 (gl_FUNC_FCHDIR): Don't set REPLACE_DUP here.
* m4/unistd_h.m4 (gl_UNISTD_H): Test whether 'dup' is declared.
(gl_UNISTD_H_DEFAULTS): Initialize GNULIB_DUP.
* modules/unistd (Makefile.am): Substitute GNULIB_DUP.
* modules/dup: New file.
* tests/test-unistd-c++.cc: Check the signature of 'dup' only if the
'dup' module is in use.
* modules/fdopendir (Depends-on): Add dup.
* modules/fdutimensat-tests (Depends-on): Likewise.
* modules/fts (Depends-on): Likewise.
* modules/futimens-tests (Depends-on): Likewise.
* modules/posix_spawnp-tests (Depends-on): Likewise.
* modules/unistd-safer-tests (Depends-on): Likewise.
* modules/utimens-tests (Depends-on): Likewise.
* doc/posix-functions/dup.texi: Mention the new module and the problem
on MSVC.
2011-09-24 02:08:13 +02:00
Bruno Haible
edca61feba Fix tests link errors.
* modules/ceil-ieee-tests (Makefile.am): Use CEIL_LIBM, not FLOOR_LIBM.
* modules/chown-tests (Makefile.am): Don't link test-chown with
LIBINTL.
* modules/lchown-tests (Makefile.am): Don't link test-lchown with
LIBINTL.
* modules/utimens-tests (Makefile.am): Don't link test-utimens with
LIBINTL.
* modules/futimens-tests (Makefile.am): Don't link test-futimens with
LIBINTL.
2011-06-17 12:41:19 +02:00
Eric Blake
3220d5c621 tests: silence warning about system return
Silence a compiler warning for platforms that mark system()
with attribute warn_unused_result.

* tests/test-areadlink-with-size.c (main): Ignore system result.
* tests/test-areadlink.c (main): Likewise.
* tests/test-areadlinkat-with-size.c (main): Likewise.
* tests/test-areadlinkat.c (main): Likewise.
* tests/test-canonicalize-lgpl.c (main): Likewise.
* tests/test-canonicalize.c (main): Likewise.
* tests/test-chown.c (main): Likewise.
* tests/test-fchownat.c (main): Likewise.
* tests/test-fdutimensat.c (main): Likewise.
* tests/test-fstatat.c (main): Likewise.
* tests/test-futimens.c (main): Likewise.
* tests/test-lchown.c (main): Likewise.
* tests/test-link.c (main): Likewise.
* tests/test-linkat.c (main): Likewise.
* tests/test-lstat.c (main): Likewise.
* tests/test-mkdir.c (main): Likewise.
* tests/test-mkdirat.c (main): Likewise.
* tests/test-mkfifo.c (main): Likewise.
* tests/test-mkfifoat.c (main): Likewise.
* tests/test-mknod.c (main): Likewise.
* tests/test-readlink.c (main): Likewise.
* tests/test-remove.c (main): Likewise.
* tests/test-rename.c (main): Likewise.
* tests/test-renameat.c (main): Likewise.
* tests/test-rmdir.c (main): Likewise.
* tests/test-symlink.c (main): Likewise.
* tests/test-symlinkat.c (main): Likewise.
* tests/test-unlink.c (main): Likewise.
* tests/test-unlinkat.c (main): Likewise.
* tests/test-utimens.c (main): Likewise.
* tests/test-utimensat.c (main): Likewise.
* modules/areadlink-tests (Depends-on): Add ignore-value.
* modules/areadlink-with-size-tests (Depends-on): Likewise.
* modules/areadlinkat-tests (Depends-on): Likewise.
* modules/areadlinkat-with-size-tests (Depends-on): Likewise.
* modules/canonicalize-lgpl-tests (Depends-on): Likewise.
* modules/canonicalize-tests (Depends-on): Likewise.
* modules/chown-tests (Depends-on): Likewise.
* modules/fdutimensat-tests (Depends-on): Likewise.
* modules/futimens-tests (Depends-on): Likewise.
* modules/lchown-tests (Depends-on): Likewise.
* modules/link-tests (Depends-on): Likewise.
* modules/linkat-tests (Depends-on): Likewise.
* modules/lstat-tests (Depends-on): Likewise.
* modules/mkdir-tests (Depends-on): Likewise.
* modules/mkfifo-tests (Depends-on): Likewise.
* modules/mkfifoat-tests (Depends-on): Likewise.
* modules/mknod-tests (Depends-on): Likewise.
* modules/openat-tests (Depends-on): Likewise.
* modules/readlink-tests (Depends-on): Likewise.
* modules/remove-tests (Depends-on): Likewise.
* modules/rename-tests (Depends-on): Likewise.
* modules/renameat-tests (Depends-on): Likewise.
* modules/rmdir-tests (Depends-on): Likewise.
* modules/symlink-tests (Depends-on): Likewise.
* modules/symlinkat-tests (Depends-on): Likewise.
* modules/unlink-tests (Depends-on): Likewise.
* modules/utimens-tests (Depends-on): Likewise.
* modules/utimensat-tests (Depends-on): Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
2010-02-01 06:24:57 -07:00
Bruno Haible
987e5651e8 Refactor common macros used in tests. 2009-12-24 21:01:42 +01:00
Eric Blake
c7362ef0be test-utimens: avoid spurious failure
Fixes a spurious failure on ext3, with one-second resolution,
now that ctime effects are being tested for inequality.

* tests/test-chown.h (nap): Factor...
* tests/nap.h: ...into new file.
* tests/test-lchown.h (nap): Avoid duplication.
* tests/test-utimens-common.h (nap): Use shared implementation,
necessary on file systems with 1-second resolution.
* modules/chown-tests (Files): Include new file.
* modules/fdutimensat-tests (Files): Likewise.
* modules/futimens-tests (Files): Likewise.
* modules/lchown-tests (Files): Likewise.
* modules/openat-tests (Files): Likewise.
* modules/utimens-tests (Files): Likewise.
* modules/utimensat-tests (Files): Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
2009-12-21 07:02:45 -07:00
Eric Blake
6038ee4b82 usleep: use it to simplify tests
Blindly using usleep makes it easier to write tests.

* modules/stat-time-tests (Depends-on): Add usleep.
(configure.ac): Drop usleep check.
* modules/chown-tests (Depends-on, configure.ac): Likewise.
* modules/lchown-tests (Depends-on, configure.ac): Likewise.
* modules/fdutimensat-tests (Depends-on, configure.ac): Likewise.
* modules/futimens-tests (Depends-on, configure.ac): Likewise.
* modules/openat-tests (Depends-on, configure.ac): Likewise.
* modules/utimens-tests (Depends-on, configure.ac): Likewise.
* modules/utimensat-tests (Depends-on, configure.ac): Likewise.
* modules/pipe-filter-gi-tests (Depends-on, configure.ac):
Likewise.
* tests/test-chown.h (nap): Rely on nicer usleep semantics.
* tests/test-lchown.h (nap): Likewise.
* tests/test-pipe-filter-gi2-main.c (small_nap): Likewise.
* tests/test-stat-time.c (nap): Likewise.
* tests/test-utimens-common.h (nap): Update comments.

Signed-off-by: Eric Blake <ebb9@byu.net>
2009-11-17 22:33:56 -07:00
Eric Blake
4d8f229535 test-stat-time, test-utimens: improve portability
ext4 on an alpha system has a quantization of about 10 ms but
a resolution of 1ns; utimecmp does not know about quantization,
so tests were failing when comparing timestamps that fall
within the same quantization window.  Add strategic usleeps
throughout to minimize this issue, whether or not we later
improve utimecmp to account for quantization.

Windows (and hence cygwin) is documented as having a default
clock quantization of 15.25 milliseconds (although it can be
reduced to 1 millisecond); file timestamps are quantized to this
boundary even though more accurate timing can be obtained.
However, this means that 15 milliseconds is too short for any
test that wants to guarantee crossing a file timestamp boundary.
Cygwin, however, still has bugs where clock_gettime can lag
behind file timestamps, which is not fixed by this patch.

Solaris 9 with NFS exposed the same problem for futimes that was
previously fixed for utimes on Solaris 8, where futimens(f,NULL)
uses a different time source than futimes(,{,UTIME_NOW}).

* tests/test-stat-time.c (nap): Lengthen delay to 20ms, for
ext4 on alpha, and for cygwin.
* tests/test-utimens-common.h: New file.
(nap): Factor delays into single function.
* tests/test-lutimens.h (test_lutimens): Use new header.
* tests/test-futimens.h (test_futimens): Likewise.
* tests/test-utimens.h (test_utimens): Likewise.  Also, force NFS
timestamps to occur from same machine, as was done previously for
test_utimens.
* modules/utimens-tests (Files): Ship new file.
* modules/futimens-tests (Files): Likewise.
Reported in part by Jim Meyering.

Signed-off-by: Eric Blake <ebb9@byu.net>
2009-10-16 08:21:24 -06:00
Eric Blake
080cbfcab5 utimens: add UTIME_NOW and UTIME_OMIT support
These flags make it possible to implement futimens and utimensat;
they also make touch(1) more efficient, by avoiding stat or
gettime if native utimensat works.

* lib/utimens.c (validate_timespec, update_timespec): New helper
functions.
(gl_futimens, lutimens): Use them.
* modules/utimens (Depends-on): Add gettime, lstat, stat-time,
stdbool, sys_stat.
(Link): Mention resulting library dependency.
* modules/utimecmp (Link): Likewise.
* modules/utimens-tests (Depends-on): Drop stat-time, stdbool.
(Makefile.am): Pick up library dependency.
* lib/sys_stat.in.h (UTIME_NOW, UTIME_OMIT): Guarantee a
definition.
* tests/test-sys_stat.c: Test the definitions.
* doc/posix-headers/sys_stat.texi (sys/stat.h): Document this.
* NEWS: Document library dependency.

Signed-off-by: Eric Blake <ebb9@byu.net>
2009-10-10 08:32:20 -06:00
Eric Blake
2726b8f439 utimens: add lutimens interface
Wraps utimensat(,AT_SYMLINK_NOFOLLOW) or lutimes, when supported;
otherwise fail with ENOSYS.  Allows coreutils' copy.c to preserve
symlink timestamps on more systems.  Note that cygwin's lstat
changes atime of symlinks, but mtime can reliably be set.

* lib/utimens.c (lutimens): New function.
* m4/utimens.m4 (gl_UTIMENS): Check for lutimes.
* lib/utimens.h (lutimens): Declare new interface.
* tests/test-utimens.c (main): Enhance test.
* tests/test-lutimens.h (test_lutimens): New file.
* modules/utimens-tests (Files): Distribute it.
(Depends-on): Add symlink.
(configure.ac): Check for usleep.

Signed-off-by: Eric Blake <ebb9@byu.net>
2009-10-10 08:29:53 -06:00
Eric Blake
30dc6636ec utimens: add test
Exposes holes in our API, and several platform bugs.

* modules/utimens-tests: New test.
* tests/test-utimens.h: New file.
* tests/test-futimens.h: Likewise.
* tests/test-utimens.c: Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
2009-10-10 08:27:25 -06:00