diff mbox series

[v2,5/5] Add `human` date format tests.

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

Commit Message

Stephen P. Smith Jan. 18, 2019, 6:18 a.m. UTC
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(+)

Comments

Junio C Hamano Jan. 18, 2019, 7:24 p.m. UTC | #1
"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 mbox series

Patch

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