123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #! /bin/sh
- # Copyright (C) 2011-2017 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
- # the Free Software Foundation; either version 2, or (at your option)
- # any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
- # Sanity check for the automake testsuite: the 'is_newest' subroutine.
- . test-init.sh
- plan_ 21
- # I'm a lazy typist.
- Y () { command_ok_ "is_newest $*" is_newest "$@"; }
- N () { command_ok_ "not is_newest $*" not is_newest "$@"; }
- # A simple "touch -r" might not work, since on some file systems, and/or
- # with some 'touch' versions, it might truncate the timestamp (or even
- # rounded it upwards maybe). So the first (apparently redundant) 'touch'
- # invocation below ensures that the timestamp gets "normalized" in a way
- # that allows it to be correctly copied by the second 'touch' invocation.
- copy_timestamp ()
- {
- touch -r "$1" "$1" && touch -r "$1" "$2"
- }
- : > a
- $sleep
- : > b
- : > c
- stat a b c || : # For debugging.
- Y c a
- Y b a
- N a b
- Y c b
- Y c c
- Y c a b c
- copy_timestamp c d
- stat c d || : # For debugging.
- Y c d
- # Should work on directories too, both empty and not-empty. An older
- # implementation of 'is_newest' failed if the first argument was a
- # directory containing files newer than itself (see automake bug#9147).
- mkdir u x
- touch x/foo
- $sleep
- touch x/foo
- $sleep
- mkdir v y
- touch y/foo
- $sleep
- touch y/foo
- stat u v x y x/foo y/foo || : # For debugging.
- for older in u x; do
- for newer in v y; do
- Y $newer $older
- N $older $newer
- done
- done
- Y x/foo x
- N x x/foo
- copy_timestamp x u
- Y x u
- Y u x
- # A couple of mild "stress" tests.
- Y y x u v
- Y y u x/foo a b c
- :
|