t0006 & t5000: skip "far in the future" test when time_t is too limited

Git's source code refers to timestamps as unsigned long, which is
ill-defined, as there is no guarantee about the number of bits that
data type has.

In preparation of switching to another data type that is large enough
to hold "far in the future" dates, we need to prepare the t0006-date.sh
script for the case where we *still* cannot format those dates if the
system library uses 32-bit time_t.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Johannes Schindelin 2017-04-20 22:58:21 +02:00 committed by Junio C Hamano
parent a07fb0507f
commit efac8ac84b
4 changed files with 8 additions and 4 deletions

View File

@ -5,7 +5,8 @@ static const char *usage_msg = "\n"
" test-date show:<format> [time_t]...\n" " test-date show:<format> [time_t]...\n"
" test-date parse [date]...\n" " test-date parse [date]...\n"
" test-date approxidate [date]...\n" " test-date approxidate [date]...\n"
" test-date is64bit\n"; " test-date is64bit\n"
" test-date time_t-is64bit\n";
static void show_relative_dates(const char **argv, struct timeval *now) static void show_relative_dates(const char **argv, struct timeval *now)
{ {
@ -96,6 +97,8 @@ int cmd_main(int argc, const char **argv)
parse_approxidate(argv+1, &now); parse_approxidate(argv+1, &now);
else if (!strcmp(*argv, "is64bit")) else if (!strcmp(*argv, "is64bit"))
return sizeof(unsigned long) == 8 ? 0 : 1; return sizeof(unsigned long) == 8 ? 0 : 1;
else if (!strcmp(*argv, "time_t-is64bit"))
return sizeof(time_t) == 8 ? 0 : 1;
else else
usage(usage_msg); usage(usage_msg);
return 0; return 0;

View File

@ -53,8 +53,8 @@ check_show unix-local "$TIME" '1466000000'
# 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" TIME_IS_64BIT check_show iso "$FUTURE" "2152-06-19 18:24:56 -0400" TIME_IS_64BIT,TIME_T_IS_64BIT
check_show iso-local "$FUTURE" "2152-06-19 22:24:56 +0000" TIME_IS_64BIT check_show iso-local "$FUTURE" "2152-06-19 22:24:56 +0000" TIME_IS_64BIT,TIME_T_IS_64BIT
check_parse() { check_parse() {
echo "$1 -> $2" >expect echo "$1 -> $2" >expect

View File

@ -402,7 +402,7 @@ test_expect_success TIME_IS_64BIT 'generate tar with future mtime' '
git archive HEAD >future.tar git archive HEAD >future.tar
' '
test_expect_success TAR_HUGE,TIME_IS_64BIT 'system tar can read our future mtime' ' test_expect_success TAR_HUGE,TIME_IS_64BIT,TIME_T_IS_64BIT 'system tar can read our future mtime' '
echo 4147 >expect && echo 4147 >expect &&
tar_info future.tar | cut -d" " -f2 >actual && tar_info future.tar | cut -d" " -f2 >actual &&
test_cmp expect actual test_cmp expect actual

View File

@ -1166,3 +1166,4 @@ test_lazy_prereq LONG_IS_64BIT '
' '
test_lazy_prereq TIME_IS_64BIT 'test-date is64bit' test_lazy_prereq TIME_IS_64BIT 'test-date is64bit'
test_lazy_prereq TIME_T_IS_64BIT 'test-date time_t-is64bit'