test-lib: introduce API for verifying file mtime
Add functions `test_set_magic_mtime` and `test_is_magic_mtime` which can be used to (re)set the mtime of a file to a predefined ("magic") timestamp, then perform some operations and finally check for mtime changes of the file. The core implementation follows the suggestion from the mailing list [1]. [1] https://lore.kernel.org/git/xmqqczl5hpaq.fsf@gitster.g/T/#u Signed-off-by: Marc Strapetz <marc.strapetz@syntevo.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
dcc0cd074f
commit
ab6245bdee
@ -1806,3 +1806,36 @@ test_region () {
|
||||
test_readlink () {
|
||||
perl -le 'print readlink($_) for @ARGV' "$@"
|
||||
}
|
||||
|
||||
# Set mtime to a fixed "magic" timestamp in mid February 2009, before we
|
||||
# run an operation that may or may not touch the file. If the file was
|
||||
# touched, its timestamp will not accidentally have such an old timestamp,
|
||||
# as long as your filesystem clock is reasonably correct. To verify the
|
||||
# timestamp, follow up with test_is_magic_mtime.
|
||||
#
|
||||
# An optional increment to the magic timestamp may be specified as second
|
||||
# argument.
|
||||
test_set_magic_mtime () {
|
||||
local inc=${2:-0} &&
|
||||
local mtime=$((1234567890 + $inc)) &&
|
||||
test-tool chmtime =$mtime "$1" &&
|
||||
test_is_magic_mtime "$1" $inc
|
||||
}
|
||||
|
||||
# Test whether the given file has the "magic" mtime set. This is meant to
|
||||
# be used in combination with test_set_magic_mtime.
|
||||
#
|
||||
# An optional increment to the magic timestamp may be specified as second
|
||||
# argument. Usually, this should be the same increment which was used for
|
||||
# the associated test_set_magic_mtime.
|
||||
test_is_magic_mtime () {
|
||||
local inc=${2:-0} &&
|
||||
local mtime=$((1234567890 + $inc)) &&
|
||||
echo $mtime >.git/test-mtime-expect &&
|
||||
test-tool chmtime --get "$1" >.git/test-mtime-actual &&
|
||||
test_cmp .git/test-mtime-expect .git/test-mtime-actual
|
||||
local ret=$?
|
||||
rm -f .git/test-mtime-expect
|
||||
rm -f .git/test-mtime-actual
|
||||
return $ret
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user