-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
Junio C Hamano
committed
Jan 26, 2010
1 parent
35eabd1
commit 93cfa7c
Showing
4 changed files
with
86 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |