t0006: skip "far in the future" test when unsigned long is not long enough
authorJeff King <peff@peff.net>
Mon, 11 Jul 2016 23:54:18 +0000 (19:54 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 15 Jul 2016 16:05:53 +0000 (09:05 -0700)
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>
help.c
t/t0006-date.sh
t/test-lib.sh
diff --git a/help.c b/help.c
index 19328ea992299d2b66b1b8de8a4a609a4d25388b..2ff3b5a7745dbb7937896fb2303c9299387929de 100644 (file)
--- a/help.c
+++ b/help.c
@@ -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".
         */
        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;
 }
 
index 04ce53509c57ad348d3adccf7f566396d69787b0..4c8cf58512513848d06f759d8e86860c5606dffa 100755 (executable)
@@ -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
@@ -50,8 +50,8 @@ check_show iso-local "$TIME" '2016-06-15 14:13:20 +0000'
 
 # 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" LONG_IS_64BIT
+check_show iso-local "$FUTURE" "2152-06-19 22:24:56 +0000" LONG_IS_64BIT
 
 check_parse() {
        echo "$1 -> $2" >expect
index 51e4a88c333463e23957eb07139b01a3de1a1a0e..4595734f957b7f4e6b40f0024a92b46110a8b7c3 100644 (file)
@@ -1098,3 +1098,12 @@ run_with_limited_cmdline () {
 }
 
 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)"
+'