git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Alex Riesen <raa.lkml@gmail.com>,
	git@vger.kernel.org
Subject: [PATCH v2 3/4] tests: add date printing and parsing tests
Date: Sun, 30 Aug 2009 22:30:16 -0400	[thread overview]
Message-ID: <20090831023015.GC5507@coredump.intra.peff.net> (raw)
In-Reply-To: <20090831022228.GA4833@coredump.intra.peff.net>

Until now, there was no coverage of relative date printing
or approxidate parsing routines (mainly because we had no
way of faking the "now" time for relative date calculations,
which made consistent testing impossible).

This new script tries to exercise the basic features of
show_date and approxidate. Most of the tests are just "this
obvious thing works" to prevent future regressions, with a
few exceptions:

  - We confirm the fix in 607a9e8 that relative year/month
    dates in the latter half of a year round correctly.

  - We confirm that the improvements in b5373e9 and 1bddb25
    work.

  - A few tests are marked to expect failure, which are
    regressions recently introduced by the two commits
    above.

Signed-off-by: Jeff King <peff@peff.net>
---
Similar to earlier 3/3, but improvements and regressions from
lt/approxidate included.

Linus, when you posted the approxidate fixes earlier, you mentioned you
might have some other corner cases. I think you were just referring to
the stuff you improved in the followup patch, but if you know of more
broken-ness, we should probably include it here.

 t/t0006-date.sh |   75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 75 insertions(+), 0 deletions(-)
 create mode 100755 t/t0006-date.sh

diff --git a/t/t0006-date.sh b/t/t0006-date.sh
new file mode 100755
index 0000000..02cd565
--- /dev/null
+++ b/t/t0006-date.sh
@@ -0,0 +1,75 @@
+#!/bin/sh
+
+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
+
+check_show() {
+	t=$(($TEST_DATE_NOW - $1))
+	echo "$t -> $2" >expect
+	test_expect_${3:-success} "relative date ($2)" "
+	test-date show $t >actual &&
+	test_cmp expect actual
+	"
+}
+
+check_show 5 '5 seconds ago'
+check_show 300 '5 minutes ago'
+check_show 18000 '5 hours ago'
+check_show 432000 '5 days ago'
+check_show 1728000 '3 weeks ago'
+check_show 13000000 '5 months ago'
+check_show 37500000 '1 year, 2 months ago'
+check_show 55188000 '1 year, 9 months ago'
+check_show 630000000 '20 years ago'
+
+check_parse() {
+	echo "$1 -> $2" >expect
+	test_expect_${3:-success} "parse date ($1)" "
+	test-date parse '$1' >actual &&
+	test_cmp expect actual
+	"
+}
+
+check_parse 2008 bad
+check_parse 2008-02 bad
+check_parse 2008-02-14 bad
+check_parse '2008-02-14 20:30:45' '2008-02-14 20:30:45 +0000'
+
+check_approxidate() {
+	echo "$1 -> $2 +0000" >expect
+	test_expect_${3:-success} "parse approxidate ($1)" "
+	test-date approxidate '$1' >actual &&
+	test_cmp expect actual
+	"
+}
+
+check_approxidate now '2009-08-30 19:20:00'
+check_approxidate '5 seconds ago' '2009-08-30 19:19:55'
+check_approxidate 5.seconds.ago '2009-08-30 19:19:55'
+check_approxidate 10.minutes.ago '2009-08-30 19:10:00'
+check_approxidate yesterday '2009-08-29 19:20:00'
+check_approxidate 3.days.ago '2009-08-27 19:20:00'
+check_approxidate 3.weeks.ago '2009-08-09 19:20:00'
+check_approxidate 3.months.ago '2009-05-30 19:20:00' failure
+check_approxidate 2.years.3.months.ago '2007-05-30 19:20:00' failure
+
+check_approxidate '6am yesterday' '2009-08-29 06:00:00'
+check_approxidate '6pm yesterday' '2009-08-29 18:00:00'
+check_approxidate '3:00' '2009-08-30 03:00:00'
+check_approxidate '15:00' '2009-08-30 15:00:00'
+check_approxidate 'noon today' '2009-08-30 12:00:00'
+check_approxidate 'noon yesterday' '2009-08-29 12:00:00'
+
+check_approxidate 'last tuesday' '2009-08-25 19:20:00'
+check_approxidate 'July 5th' '2009-07-05 19:20:00'
+check_approxidate '06/05/2009' '2009-06-05 19:20:00'
+check_approxidate '06.05.2009' '2009-05-06 19:20:00'
+
+check_approxidate 'Jun 6, 5AM' '2009-06-06 05:00:00'
+check_approxidate '5AM Jun 6' '2009-06-06 05:00:00'
+check_approxidate '6AM, June 7, 2009' '2009-06-07 06:00:00'
+
+test_done
-- 
1.6.4.2.373.g5881fd

  parent reply	other threads:[~2009-08-31  2:30 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-27 23:39 [PATCH] Round-down years in "years+months" relative date view David Reiss
2009-08-28  6:05 ` Jeff King
2009-08-28  7:58   ` Alex Riesen
2009-08-28 15:02     ` Jeff King
2009-08-28 17:00       ` Alex Riesen
2009-08-28 17:15         ` Jeff King
2009-08-28 18:21           ` Alex Riesen
2009-08-28 22:01           ` A Large Angry SCM
2009-08-28 17:28       ` Nicolas Pitre
2009-08-28 18:01         ` Jeff King
2009-08-28 18:27           ` Alex Riesen
2009-08-28 18:39             ` Jeff King
2009-08-28 18:42               ` Alex Riesen
2009-08-28 18:49                 ` Alex Riesen
2009-08-28 19:00                 ` Nicolas Pitre
2009-08-28 19:08                   ` Alex Riesen
2009-08-28 19:27                     ` Nicolas Pitre
2009-08-28 19:49                       ` Alex Riesen
2009-08-28 20:01                         ` Nicolas Pitre
2009-08-28 19:03         ` Alex Riesen
2009-08-28 19:15           ` Jeff King
2009-08-28 19:20             ` Alex Riesen
2009-08-28 19:33               ` Alex Riesen
2009-08-28 20:52                 ` [PATCH] Allow testing of _relative family of time formatting and parsing functions Alex Riesen
2009-08-28 20:54                   ` Alex Riesen
2009-08-29 21:46                   ` Junio C Hamano
2009-08-30  7:25                     ` Alex Riesen
2009-08-30  7:51                       ` Jeff King
2009-08-30  8:10                         ` Alex Riesen
2009-08-30  9:13                       ` [PATCH 1/2] Add date formatting and parsing functions relative to a given time Alex Riesen
2009-08-30  9:15                         ` [PATCH 2/2] Allow testing of _relative family of time formatting and parsing functions Alex Riesen
2009-08-30  9:15                         ` [PATCH 1/2] Add date formatting and parsing functions relative to a given time Jeff King
2009-08-30  9:36                           ` Jeff King
2009-08-30  9:56                             ` Alex Riesen
2009-08-30 10:08                               ` Jeff King
2009-08-30 11:17                                 ` Alex Riesen
2009-08-30 21:43                             ` [PATCH 1/3] " Jeff King
2009-08-30 21:51                               ` Jeff King
2009-08-31  2:22                                 ` Jeff King
2009-08-31  2:26                                   ` [PATCH v2 1/4] " Jeff King
2009-08-31  6:08                                     ` Alex Riesen
2009-08-31  2:26                                   ` [PATCH v2 2/4] refactor test-date interface Jeff King
2009-08-31  2:30                                   ` Jeff King [this message]
2009-09-01  3:03                                     ` [PATCH v2 3/4] tests: add date printing and parsing tests Jeff King
2009-08-31  2:31                                   ` [PATCH v2 4/4] fix approxidate parsing of relative months and years Jeff King
2009-08-30 21:46                             ` [PATCH 2/3] refactor test-date interface Jeff King
2009-08-30 21:47                             ` [PATCH 3/3] tests: add date printing and parsing tests Jeff King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090831023015.GC5507@coredump.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=raa.lkml@gmail.com \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).