Browse Source

Add `human` format to test-tool

Add the human format support to the test tool so that
GIT_TEST_DATE_NOW can be used to specify the current time.

The get_time() helper function was created and and checks the
GIT_TEST_DATE_NOW environment variable.  If GIT_TEST_DATE_NOW is set,
then that date is used instead of the date returned by by
gettimeofday().

All calls to gettimeofday() were replaced by calls to get_time().

Renamed occurances of TEST_DATE_NOW to GIT_TEST_DATE_NOW since the
variable is now used in the get binary and not just in the test-tool.

Signed-off-by: Stephen P. Smith <ischis2@cox.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Stephen P. Smith 6 years ago committed by Junio C Hamano
parent
commit
b841d4ff43
  1. 2
      cache.h
  2. 21
      date.c
  3. 13
      t/helper/test-date.c
  4. 4
      t/t0006-date.sh

2
cache.h

@ -1453,6 +1453,8 @@ struct date_mode *date_mode_from_type(enum date_mode_type type); @@ -1453,6 +1453,8 @@ struct date_mode *date_mode_from_type(enum date_mode_type type);
const char *show_date(timestamp_t time, int timezone, const struct date_mode *mode);
void show_date_relative(timestamp_t time, int tz, const struct timeval *now,
struct strbuf *timebuf);
void show_date_human(timestamp_t time, int tz, const struct timeval *now,
struct strbuf *timebuf);
int parse_date(const char *date, struct strbuf *out);
int parse_date_basic(const char *date, timestamp_t *timestamp, int *offset);
int parse_expiry_date(const char *date, timestamp_t *timestamp);

21
date.c

@ -115,6 +115,19 @@ static int local_tzoffset(timestamp_t time) @@ -115,6 +115,19 @@ static int local_tzoffset(timestamp_t time)
return local_time_tzoffset((time_t)time, &tm);
}

static void get_time(struct timeval *now)
{
const char *x;

x = getenv("GIT_TEST_DATE_NOW");
if (x) {
now->tv_sec = atoi(x);
now->tv_usec = 0;
}
else
gettimeofday(now, NULL);
}

void show_date_relative(timestamp_t time, int tz,
const struct timeval *now,
struct strbuf *timebuf)
@ -228,7 +241,7 @@ static void show_date_normal(struct strbuf *buf, timestamp_t time, struct tm *tm @@ -228,7 +241,7 @@ static void show_date_normal(struct strbuf *buf, timestamp_t time, struct tm *tm
/* Show "today" times as just relative times */
if (hide.wday) {
struct timeval now;
gettimeofday(&now, NULL);
get_time(&now);
show_date_relative(time, tz, &now, buf);
return;
}
@ -284,7 +297,7 @@ const char *show_date(timestamp_t time, int tz, const struct date_mode *mode) @@ -284,7 +297,7 @@ const char *show_date(timestamp_t time, int tz, const struct date_mode *mode)
if (mode->type == DATE_HUMAN) {
struct timeval now;

gettimeofday(&now, NULL);
get_time(&now);

/* Fill in the data for "current time" in human_tz and human_tm */
human_tz = local_time_tzoffset(now.tv_sec, &human_tm);
@ -303,7 +316,7 @@ const char *show_date(timestamp_t time, int tz, const struct date_mode *mode) @@ -303,7 +316,7 @@ const char *show_date(timestamp_t time, int tz, const struct date_mode *mode)
struct timeval now;

strbuf_reset(&timebuf);
gettimeofday(&now, NULL);
get_time(&now);
show_date_relative(time, tz, &now, &timebuf);
return timebuf.buf;
}
@ -1290,7 +1303,7 @@ timestamp_t approxidate_careful(const char *date, int *error_ret) @@ -1290,7 +1303,7 @@ timestamp_t approxidate_careful(const char *date, int *error_ret)
return timestamp;
}

gettimeofday(&tv, NULL);
get_time(&tv);
return approxidate_str(date, &tv, error_ret);
}


13
t/helper/test-date.c

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@

static const char *usage_msg = "\n"
" test-tool date relative [time_t]...\n"
" test-tool date human [time_t]...\n"
" test-tool date show:<format> [time_t]...\n"
" test-tool date parse [date]...\n"
" test-tool date approxidate [date]...\n"
@ -22,6 +23,14 @@ static void show_relative_dates(const char **argv, struct timeval *now) @@ -22,6 +23,14 @@ static void show_relative_dates(const char **argv, struct timeval *now)
strbuf_release(&buf);
}

static void show_human_dates(const char **argv)
{
for (; *argv; argv++) {
time_t t = atoi(*argv);
printf("%s -> %s\n", *argv, show_date(t, 0, DATE_MODE(HUMAN)));
}
}

static void show_dates(const char **argv, const char *format)
{
struct date_mode mode;
@ -87,7 +96,7 @@ int cmd__date(int argc, const char **argv) @@ -87,7 +96,7 @@ int cmd__date(int argc, const char **argv)
struct timeval now;
const char *x;

x = getenv("TEST_DATE_NOW");
x = getenv("GIT_TEST_DATE_NOW");
if (x) {
now.tv_sec = atoi(x);
now.tv_usec = 0;
@ -100,6 +109,8 @@ int cmd__date(int argc, const char **argv) @@ -100,6 +109,8 @@ int cmd__date(int argc, const char **argv)
usage(usage_msg);
if (!strcmp(*argv, "relative"))
show_relative_dates(argv+1, &now);
else if (!strcmp(*argv, "human"))
show_human_dates(argv+1);
else if (skip_prefix(*argv, "show:", &x))
show_dates(argv+1, x);
else if (!strcmp(*argv, "parse"))

4
t/t0006-date.sh

@ -4,10 +4,10 @@ test_description='test date parsing and printing' @@ -4,10 +4,10 @@ test_description='test date parsing and printing'
. ./test-lib.sh

# arbitrary reference time: 2009-08-30 19:20:00
TEST_DATE_NOW=1251660000; export TEST_DATE_NOW
GIT_TEST_DATE_NOW=1251660000; export GIT_TEST_DATE_NOW

check_relative() {
t=$(($TEST_DATE_NOW - $1))
t=$(($GIT_TEST_DATE_NOW - $1))
echo "$t -> $2" >expect
test_expect_${3:-success} "relative date ($2)" "
test-tool date relative $t >actual &&

Loading…
Cancel
Save