summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>2016-07-12 13:25:20 +0200
committerJunio C Hamano <gitster@pobox.com>2016-07-13 11:30:42 -0700
commitae47c67bd2b98ab35a7d506ef2f1dc36bf0c5993 (patch)
treea550461d056929ab6b2aec263b44b75c02fa0668
parentbab748371a104c58058c0eff9f4073b710ce0355 (diff)
downloadgit-js/t0006-for-v2.9.2.tar.gz
t0006: skip "far in the future" test when unsigned long is not long enoughjs/t0006-for-v2.9.2
Git's source code refers to timestamps as unsigned longs. On 32-bit platforms, as well as on Windows, unsigned long is not large enough to capture dates that are "absurdly far in the future". While we can fix this issue properly by replacing unsigned long with a larger type, we want to be a bit more conservative and just skip those tests on the maint track. The test helper reads the timestamp given from the command line into "unsigned long" using strtol(), which gives us LONG_MAX upon overflow, so feeding 9999999999 and seeing the resulting "timestamp" shown in year 2038 is a sufficient check for that condition. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Helped-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xt/t0006-date.sh18
1 files changed, 15 insertions, 3 deletions
diff --git a/t/t0006-date.sh b/t/t0006-date.sh
index 04ce53509c..6070c29a6b 100755
--- a/t/t0006-date.sh
+++ b/t/t0006-date.sh
@@ -31,7 +31,7 @@ check_show () {
format=$1
time=$2
expect=$3
- test_expect_${4:-success} "show date ($format:$time)" '
+ test_expect_success $4 "show date ($format:$time)" '
echo "$time -> $expect" >expect &&
test-date show:$format "$time" >actual &&
test_cmp expect actual
@@ -48,10 +48,22 @@ check_show default "$TIME" 'Wed Jun 15 16:13:20 2016 +0200'
check_show raw "$TIME" '1466000000 +0200'
check_show iso-local "$TIME" '2016-06-15 14:13:20 +0000'
+test_lazy_prereq 64BIT_TIME '
+ case "$(test-date show:iso 9999999999)" in
+ *" -> 2038-"*)
+ # on this platform, unsigned long is 32-bit, i.e. not large enough
+ false
+ ;;
+ *)
+ true
+ ;;
+ esac
+'
+
# arbitrary time absurdly far in the future
FUTURE="5758122296 -0400"
-check_show iso "$FUTURE" "2152-06-19 18:24:56 -0400"
-check_show iso-local "$FUTURE" "2152-06-19 22:24:56 +0000"
+check_show iso "$FUTURE" "2152-06-19 18:24:56 -0400" 64BIT_TIME
+check_show iso-local "$FUTURE" "2152-06-19 22:24:56 +0000" 64BIT_TIME
check_parse() {
echo "$1 -> $2" >expect