Message ID | 20190118061805.19086-6-ischis2@cox.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Re-roll of 'human' date format patch set | expand |
"Stephen P. Smith" <ischis2@cox.net> writes: > +check_date_format() { > + format=$1 > + t=$(($TEST_DATE_NOW - $2)) > + expect=$3 Notice that neither $format nor $1 is used in this test, which means that "check_date_format" is not a generic "I can take a format parameter to check the specified one". So perhaps check_date_format_human () { and then lose the first parameter? > + test_expect_success "human date $t" " > + echo $TEST_DATE_NOW >now && > + test-tool date human $t >actual && > + grep '$expect' actual > +" Hopefully $3 does not have a single quote in it ;-) But the test block can see the shell variables just fine, so writing it like the following is more in line with how the test framework is designed to be used. test_expect_success "human date $t" ' echo "$TEST_DATE_NOW" >now && test-tool date human "$t" >actual && grep "$expect" actual ' How is the file 'now' get used? Nobody seems to read it around here. Is the last one supposed to be "grep"? Or should we do echo "$expect" >expect && test_cmp expect actual instead? > +} > + > +check_date_format human 18000 "5 hours ago" # 5 hours ago > +check_date_format human 432000 "Tue Aug 25 19:20" # 5 days ago > +check_date_format human 1728000 "Mon Aug 10 19:20" # 3 weeks ago > +check_date_format human 13000000 "Thu Apr 2 08:13" # 5 months ago > +check_date_format human 31449600 "Aug 31 2008" # 12 months ago > +check_date_format human 37500000 "Jun 22 2008" # 1 year, 2 months ago > +check_date_format human 55188000 "Dec 1 2007" # 1 year, 9 months ago > +check_date_format human 630000000 "Sep 13 1989" # 20 years ago > + > test_done
diff --git a/t/t0006-date.sh b/t/t0006-date.sh index ffb2975e48..c7c0786b24 100755 --- a/t/t0006-date.sh +++ b/t/t0006-date.sh @@ -128,4 +128,24 @@ check_approxidate '6AM, June 7, 2009' '2009-06-07 06:00:00' check_approxidate '2008-12-01' '2008-12-01 19:20:00' check_approxidate '2009-12-01' '2009-12-01 19:20:00' +check_date_format() { + format=$1 + t=$(($TEST_DATE_NOW - $2)) + expect=$3 + test_expect_success "human date $t" " + echo $TEST_DATE_NOW >now && + test-tool date human $t >actual && + grep '$expect' actual +" +} + +check_date_format human 18000 "5 hours ago" # 5 hours ago +check_date_format human 432000 "Tue Aug 25 19:20" # 5 days ago +check_date_format human 1728000 "Mon Aug 10 19:20" # 3 weeks ago +check_date_format human 13000000 "Thu Apr 2 08:13" # 5 months ago +check_date_format human 31449600 "Aug 31 2008" # 12 months ago +check_date_format human 37500000 "Jun 22 2008" # 1 year, 2 months ago +check_date_format human 55188000 "Dec 1 2007" # 1 year, 9 months ago +check_date_format human 630000000 "Sep 13 1989" # 20 years ago + test_done
When using `human` several fields are suppressed depending on the time difference between the reference date and the local computer date. In cases where the difference is less than a year, the year field is supppressed. If the time is less than a day; the month and year is suppressed. Use TEST_DATE_NOW environment variable when using the test-tool to hold the expected output strings constant. Signed-off-by: Stephen P. Smith <ischis2@cox.net> --- t/t0006-date.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)