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
parent
038a878810
commit
b841d4ff43
2
cache.h
2
cache.h
|
@ -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);
|
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,
|
void show_date_relative(timestamp_t time, int tz, const struct timeval *now,
|
||||||
struct strbuf *timebuf);
|
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(const char *date, struct strbuf *out);
|
||||||
int parse_date_basic(const char *date, timestamp_t *timestamp, int *offset);
|
int parse_date_basic(const char *date, timestamp_t *timestamp, int *offset);
|
||||||
int parse_expiry_date(const char *date, timestamp_t *timestamp);
|
int parse_expiry_date(const char *date, timestamp_t *timestamp);
|
||||||
|
|
21
date.c
21
date.c
|
@ -115,6 +115,19 @@ static int local_tzoffset(timestamp_t time)
|
||||||
return local_time_tzoffset((time_t)time, &tm);
|
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,
|
void show_date_relative(timestamp_t time, int tz,
|
||||||
const struct timeval *now,
|
const struct timeval *now,
|
||||||
struct strbuf *timebuf)
|
struct strbuf *timebuf)
|
||||||
|
@ -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 */
|
/* Show "today" times as just relative times */
|
||||||
if (hide.wday) {
|
if (hide.wday) {
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
gettimeofday(&now, NULL);
|
get_time(&now);
|
||||||
show_date_relative(time, tz, &now, buf);
|
show_date_relative(time, tz, &now, buf);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -284,7 +297,7 @@ const char *show_date(timestamp_t time, int tz, const struct date_mode *mode)
|
||||||
if (mode->type == DATE_HUMAN) {
|
if (mode->type == DATE_HUMAN) {
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
|
|
||||||
gettimeofday(&now, NULL);
|
get_time(&now);
|
||||||
|
|
||||||
/* Fill in the data for "current time" in human_tz and human_tm */
|
/* Fill in the data for "current time" in human_tz and human_tm */
|
||||||
human_tz = local_time_tzoffset(now.tv_sec, &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)
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
|
|
||||||
strbuf_reset(&timebuf);
|
strbuf_reset(&timebuf);
|
||||||
gettimeofday(&now, NULL);
|
get_time(&now);
|
||||||
show_date_relative(time, tz, &now, &timebuf);
|
show_date_relative(time, tz, &now, &timebuf);
|
||||||
return timebuf.buf;
|
return timebuf.buf;
|
||||||
}
|
}
|
||||||
|
@ -1290,7 +1303,7 @@ timestamp_t approxidate_careful(const char *date, int *error_ret)
|
||||||
return timestamp;
|
return timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
gettimeofday(&tv, NULL);
|
get_time(&tv);
|
||||||
return approxidate_str(date, &tv, error_ret);
|
return approxidate_str(date, &tv, error_ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
static const char *usage_msg = "\n"
|
static const char *usage_msg = "\n"
|
||||||
" test-tool date relative [time_t]...\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 show:<format> [time_t]...\n"
|
||||||
" test-tool date parse [date]...\n"
|
" test-tool date parse [date]...\n"
|
||||||
" test-tool date approxidate [date]...\n"
|
" test-tool date approxidate [date]...\n"
|
||||||
|
@ -22,6 +23,14 @@ static void show_relative_dates(const char **argv, struct timeval *now)
|
||||||
strbuf_release(&buf);
|
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)
|
static void show_dates(const char **argv, const char *format)
|
||||||
{
|
{
|
||||||
struct date_mode mode;
|
struct date_mode mode;
|
||||||
|
@ -87,7 +96,7 @@ int cmd__date(int argc, const char **argv)
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
const char *x;
|
const char *x;
|
||||||
|
|
||||||
x = getenv("TEST_DATE_NOW");
|
x = getenv("GIT_TEST_DATE_NOW");
|
||||||
if (x) {
|
if (x) {
|
||||||
now.tv_sec = atoi(x);
|
now.tv_sec = atoi(x);
|
||||||
now.tv_usec = 0;
|
now.tv_usec = 0;
|
||||||
|
@ -100,6 +109,8 @@ int cmd__date(int argc, const char **argv)
|
||||||
usage(usage_msg);
|
usage(usage_msg);
|
||||||
if (!strcmp(*argv, "relative"))
|
if (!strcmp(*argv, "relative"))
|
||||||
show_relative_dates(argv+1, &now);
|
show_relative_dates(argv+1, &now);
|
||||||
|
else if (!strcmp(*argv, "human"))
|
||||||
|
show_human_dates(argv+1);
|
||||||
else if (skip_prefix(*argv, "show:", &x))
|
else if (skip_prefix(*argv, "show:", &x))
|
||||||
show_dates(argv+1, x);
|
show_dates(argv+1, x);
|
||||||
else if (!strcmp(*argv, "parse"))
|
else if (!strcmp(*argv, "parse"))
|
||||||
|
|
|
@ -4,10 +4,10 @@ test_description='test date parsing and printing'
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
# arbitrary reference time: 2009-08-30 19:20:00
|
# 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() {
|
check_relative() {
|
||||||
t=$(($TEST_DATE_NOW - $1))
|
t=$(($GIT_TEST_DATE_NOW - $1))
|
||||||
echo "$t -> $2" >expect
|
echo "$t -> $2" >expect
|
||||||
test_expect_${3:-success} "relative date ($2)" "
|
test_expect_${3:-success} "relative date ($2)" "
|
||||||
test-tool date relative $t >actual &&
|
test-tool date relative $t >actual &&
|
||||||
|
|
Loading…
Reference in New Issue