diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-01-26 11:58:00 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-01-26 13:51:41 -0800 |
commit | 93cfa7c7a85efbdb00daade4ad0afc11bd2fdf37 (patch) | |
tree | c3eb3ae7229b9e55ca29bfedb9695928bc019764 /t/t0101-at-syntax.sh | |
parent | 35eabd1579726d594e84fc8328a5c87693dd065a (diff) | |
download | git-93cfa7c7a85efbdb00daade4ad0afc11bd2fdf37.tar.gz |
approxidate_careful() reports errorneous date string
For a long time, the time based reflog syntax (e.g. master@{yesterday})
didn't complain when the "human readable" timestamp was misspelled, as
the underlying mechanism tried to be as lenient as possible. The funny
thing was that parsing of "@{now}" even relied on the fact that anything
not recognized by the machinery returned the current timestamp.
Introduce approxidate_careful() that takes an optional pointer to an
integer, that gets assigned 1 when the input does not make sense as a
timestamp.
As I am too lazy to fix all the callers that use approxidate(), most of
the callers do not take advantage of the error checking, but convert the
code to parse reflog to use it as a demonstration.
Tests are mostly from Jeff King.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t0101-at-syntax.sh')
-rwxr-xr-x | t/t0101-at-syntax.sh | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/t/t0101-at-syntax.sh b/t/t0101-at-syntax.sh new file mode 100755 index 0000000000..ccabc37a12 --- /dev/null +++ b/t/t0101-at-syntax.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +test_description='various @{whatever} syntax tests' +. ./test-lib.sh + +test_expect_success 'setup' ' + test_commit one && + test_commit two +' + +check_at() { + echo "$2" >expect && + git log -1 --format=%s "$1" >actual && + test_cmp expect actual +} + +test_expect_success '@{0} shows current' ' + check_at @{0} two +' + +test_expect_success '@{1} shows old' ' + check_at @{1} one +' + +test_expect_success '@{now} shows current' ' + check_at @{now} two +' + +test_expect_success '@{30.years.ago} shows old' ' + check_at @{30.years.ago} one +' + +test_expect_success 'silly approxidates work' ' + check_at @{3.hot.dogs.and.30.years.ago} one +' + +test_expect_success 'notice misspelled upstream' ' + test_must_fail git log -1 --format=%s @{usptream} +' + +test_expect_success 'complain about total nonsense' ' + test_must_fail git log -1 --format=%s @{utter.bogosity} +' + +test_done |