]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t0006: add support for approxidate test date adjustment
authorTuomas Ahola <taahol@utu.fi>
Thu, 21 May 2026 10:54:06 +0000 (13:54 +0300)
committerJunio C Hamano <gitster@pobox.com>
Thu, 21 May 2026 13:30:05 +0000 (22:30 +0900)
t0006 uses a hard-coded test date and provides no convenient
way to override it temporarily.  Add an optional parameter to
check_approxidate to adjust the time as needed, and demonstrate
the feature with a new test.

Signed-off-by: Tuomas Ahola <taahol@utu.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t0006-date.sh

index d95afdda33ffd27a7fa6e75ca75cf75fd1417d6a..b9bb7a05d9f6c651079729d2c5845c6afee6cd07 100755 (executable)
@@ -155,12 +155,41 @@ check_parse '2100-00-00 00:00:00 -11' bad
 check_parse '2100-00-00 00:00:00 +11' bad
 REQUIRE_64BIT_TIME=
 
+add_time_offset() {
+       case "$3" in
+       hours)
+               unit=$(( 60*60 ))
+               ;;
+       days)
+               unit=$(( 24*60*60 ))
+               ;;
+       esac
+       offset=$(( $2 * unit ))
+       echo $(( $1 + offset ))
+}
+
 check_approxidate() {
+       old_date=$GIT_TEST_DATE_NOW
+       if test "$3" = "failure"
+       then
+               expection="$3"
+       else
+               expection=${4:-success}
+               offset="$3"
+       fi
+       if test -n "$offset"
+       then
+               GIT_TEST_DATE_NOW=$(add_time_offset $old_date $offset)
+               caption="$1; offset $offset"
+       else
+               caption=$1
+       fi
        echo "$1 -> $2 +0000" >expect
-       test_expect_${3:-success} "parse approxidate ($1)" "
+       test_expect_$expection "parse approxidate ($caption)" "
        test-tool date approxidate '$1' >actual &&
        test_cmp expect actual
        "
+       GIT_TEST_DATE_NOW=$old_date
 }
 
 check_approxidate now '2009-08-30 19:20:00'
@@ -184,6 +213,8 @@ check_approxidate 'noon yesterday' '2009-08-29 12:00:00'
 check_approxidate 'January 5th noon pm' '2009-01-05 12:00:00'
 check_approxidate 'January 5th today pm' '2009-01-30 12:00:00'
 check_approxidate '10am noon' '2009-08-29 12:00:00'
+check_approxidate 'January 5th yesterday' '2009-01-29 19:20:00'
+check_approxidate 'January 5th yesterday' '2008-12-31 19:20:00' '+2 days'
 
 check_approxidate 'last tuesday' '2009-08-25 19:20:00'
 check_approxidate 'July 5th' '2009-07-05 19:20:00'