diff --git a/gix-index/tests/fixtures/file_metadata.sh b/gix-index/tests/fixtures/file_metadata.sh index 9e86330a05b..3238420dfab 100755 --- a/gix-index/tests/fixtures/file_metadata.sh +++ b/gix-index/tests/fixtures/file_metadata.sh @@ -1,9 +1,13 @@ #!/usr/bin/env bash set -eu -o pipefail -# Attempt to create files with the latest and earliest possible dates for ext4. Nanoseconds are -# special there, but not usually on other filesystems. In some touch implementations, the format -# may be rejected. So if a command fails, we try again with a more extreme date that is out of -# range, because some implementations will clip it to the edge of the range (but they may fail). -touch -d '2446-05-10 22:38:55.111111111' future || touch -d '2446-05-11 22:38:56' future -touch -d '1901-12-13 20:45:52.222222222' past || touch -d '1901-12-13 20:45:52' past +# Attempt to create files with the latest and earliest possible 64-bit dates/times for ext4. +# Although nanoseconds are stored in ext4, specifying fractions of a second does not seem to make +# this work better, and omitting them allows the commands that attempt to set these dates to +# succeed on more systems. While we use a portable format, if the system rejects a future date as +# out of range with an error (and touch does not automatically retry with an allowed date) then it +# can fail. In this case, we try again with a much more moderate date: the greatest value that can +# in practice always parse to fit within a 32-bit signed time_t. This is subject to change to +# support changed or new tests. It will also become less useful in the near future (after 2038). +TZ=UTC touch -d '2446-05-10 22:38:55' future || TZ=UTC touch -d '2038-01-19 03:14:07' future +TZ=UTC touch -d '1901-12-13 20:45:52' past