t4212: test bogus timestamps with git-log
When t4212 was originally added by9dbe7c3d
(pretty: handle broken commit headers gracefully, 2013-04-17), it tested our handling of commits with broken ident lines in which the timestamps could not be parsed. It does so using a bogus line like "Name <email>-<> 1234 -0000", because that simulates an error that was seen in the wild. Later,03818a4
(split_ident: parse timestamp from end of line, 2013-10-14) made our parser smart enough to actually find the timestamp on such a line, and t4212 was adjusted to match. While it's nice that we handle this real-world case, this meant that we were not actually testing the bogus-timestamp case anymore. This patch adds a test with a totally incomprehensible timestamp to make sure we are testing the code path. Note that the behavior is slightly different between regular log output and "--format=%ad". In the former case, we produce a sentinel value and in the latter, we produce an empty string. While at first this seems unnecessarily inconsistent, it matches the original behavior given by9dbe7c3d
. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e45bda876a
commit
7d9a281941
@ -39,4 +39,25 @@ test_expect_success 'git log --format with broken author email' '
|
||||
test_cmp expect.err actual.err
|
||||
'
|
||||
|
||||
munge_author_date () {
|
||||
git cat-file commit "$1" >commit.orig &&
|
||||
sed "s/^\(author .*>\) [0-9]*/\1 $2/" <commit.orig >commit.munge &&
|
||||
git hash-object -w -t commit commit.munge
|
||||
}
|
||||
|
||||
test_expect_success 'unparsable dates produce sentinel value' '
|
||||
commit=$(munge_author_date HEAD totally_bogus) &&
|
||||
echo "Date: Thu Jan 1 00:00:00 1970 +0000" >expect &&
|
||||
git log -1 $commit >actual.full &&
|
||||
grep Date <actual.full >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'unparsable dates produce sentinel value (%ad)' '
|
||||
commit=$(munge_author_date HEAD totally_bogus) &&
|
||||
echo >expect &&
|
||||
git log -1 --format=%ad $commit >actual
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user