@matheusbsbs / matheus-bagliano / commits / 34dc6e73b0
Fork 0

tests: add date printing and parsing tests

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> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Aug 30, 2009 at 22:30 UTC 34dc6e73b01011fcbe0f314d47fd6120382ae145
1 file changed +75
t/t0006-date.sh new
+75
@@ -0,0 +1,75 @@
1 +#!/bin/sh
2 +
3 +test_description='test date parsing and printing'
4 +. ./test-lib.sh
5 +
6 +# arbitrary reference time: 2009-08-30 19:20:00
7 +TEST_DATE_NOW=1251660000; export TEST_DATE_NOW
8 +
9 +check_show() {
10 + t=$(($TEST_DATE_NOW - $1))
11 + echo "$t -> $2" >expect
12 + test_expect_${3:-success} "relative date ($2)" "
13 + test-date show $t >actual &&
14 + test_cmp expect actual
15 + "
16 +}
17 +
18 +check_show 5 '5 seconds ago'
19 +check_show 300 '5 minutes ago'
20 +check_show 18000 '5 hours ago'
21 +check_show 432000 '5 days ago'
22 +check_show 1728000 '3 weeks ago'
23 +check_show 13000000 '5 months ago'
24 +check_show 37500000 '1 year, 2 months ago'
25 +check_show 55188000 '1 year, 9 months ago'
26 +check_show 630000000 '20 years ago'
27 +
28 +check_parse() {
29 + echo "$1 -> $2" >expect
30 + test_expect_${3:-success} "parse date ($1)" "
31 + test-date parse '$1' >actual &&
32 + test_cmp expect actual
33 + "
34 +}
35 +
36 +check_parse 2008 bad
37 +check_parse 2008-02 bad
38 +check_parse 2008-02-14 bad
39 +check_parse '2008-02-14 20:30:45' '2008-02-14 20:30:45 +0000'
40 +
41 +check_approxidate() {
42 + echo "$1 -> $2 +0000" >expect
43 + test_expect_${3:-success} "parse approxidate ($1)" "
44 + test-date approxidate '$1' >actual &&
45 + test_cmp expect actual
46 + "
47 +}
48 +
49 +check_approxidate now '2009-08-30 19:20:00'
50 +check_approxidate '5 seconds ago' '2009-08-30 19:19:55'
51 +check_approxidate 5.seconds.ago '2009-08-30 19:19:55'
52 +check_approxidate 10.minutes.ago '2009-08-30 19:10:00'
53 +check_approxidate yesterday '2009-08-29 19:20:00'
54 +check_approxidate 3.days.ago '2009-08-27 19:20:00'
55 +check_approxidate 3.weeks.ago '2009-08-09 19:20:00'
56 +check_approxidate 3.months.ago '2009-05-30 19:20:00' failure
57 +check_approxidate 2.years.3.months.ago '2007-05-30 19:20:00' failure
58 +
59 +check_approxidate '6am yesterday' '2009-08-29 06:00:00'
60 +check_approxidate '6pm yesterday' '2009-08-29 18:00:00'
61 +check_approxidate '3:00' '2009-08-30 03:00:00'
62 +check_approxidate '15:00' '2009-08-30 15:00:00'
63 +check_approxidate 'noon today' '2009-08-30 12:00:00'
64 +check_approxidate 'noon yesterday' '2009-08-29 12:00:00'
65 +
66 +check_approxidate 'last tuesday' '2009-08-25 19:20:00'
67 +check_approxidate 'July 5th' '2009-07-05 19:20:00'
68 +check_approxidate '06/05/2009' '2009-06-05 19:20:00'
69 +check_approxidate '06.05.2009' '2009-05-06 19:20:00'
70 +
71 +check_approxidate 'Jun 6, 5AM' '2009-06-06 05:00:00'
72 +check_approxidate '5AM Jun 6' '2009-06-06 05:00:00'
73 +check_approxidate '6AM, June 7, 2009' '2009-06-07 06:00:00'
74 +
75 +test_done