t0006: skip "far in the future" test when unsigned long is not long enough

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.

Signed-off-by: Jeff King <peff@peff.net>
Helped-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2016-07-11 19:54:18 -04:00 committed by Junio C Hamano
parent bab748371a
commit 6b9c38e14c
3 changed files with 18 additions and 3 deletions

6
help.c
View File

@ -419,6 +419,12 @@ int cmd_version(int argc, const char **argv, const char *prefix)
* with external projects that rely on the output of "git version". * with external projects that rely on the output of "git version".
*/ */
printf("git version %s\n", git_version_string); printf("git version %s\n", git_version_string);
while (*++argv) {
if (!strcmp(*argv, "--build-options")) {
printf("sizeof-long: %d\n", (int)sizeof(long));
/* NEEDSWORK: also save and output GIT-BUILD_OPTIONS? */
}
}
return 0; return 0;
} }

View File

@ -31,7 +31,7 @@ check_show () {
format=$1 format=$1
time=$2 time=$2
expect=$3 expect=$3
test_expect_${4:-success} "show date ($format:$time)" ' test_expect_success $4 "show date ($format:$time)" '
echo "$time -> $expect" >expect && echo "$time -> $expect" >expect &&
test-date show:$format "$time" >actual && test-date show:$format "$time" >actual &&
test_cmp expect actual test_cmp expect actual
@ -50,8 +50,8 @@ check_show iso-local "$TIME" '2016-06-15 14:13:20 +0000'
# arbitrary time absurdly far in the future # arbitrary time absurdly far in the future
FUTURE="5758122296 -0400" FUTURE="5758122296 -0400"
check_show iso "$FUTURE" "2152-06-19 18:24:56 -0400" check_show iso "$FUTURE" "2152-06-19 18:24:56 -0400" LONG_IS_64BIT
check_show iso-local "$FUTURE" "2152-06-19 22:24:56 +0000" check_show iso-local "$FUTURE" "2152-06-19 22:24:56 +0000" LONG_IS_64BIT
check_parse() { check_parse() {
echo "$1 -> $2" >expect echo "$1 -> $2" >expect

View File

@ -1098,3 +1098,12 @@ run_with_limited_cmdline () {
} }
test_lazy_prereq CMDLINE_LIMIT 'run_with_limited_cmdline true' test_lazy_prereq CMDLINE_LIMIT 'run_with_limited_cmdline true'
build_option () {
git version --build-options |
sed -ne "s/^$1: //p"
}
test_lazy_prereq LONG_IS_64BIT '
test 8 -le "$(build_option sizeof-long)"
'