Re: [PATCH v3 6/6] Make sure that index-pack --strict checks tag objects
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 11, 2014, 21:16 UTC
- Message-ID
- <xmqqoauldfij.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <xmqqha0edony.fsf@gitster.dls.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 16 quoted lines
> When our toolset has become too tight without leaving enough escape > hatch to hinder further development, it is very sensible to at least > think about adding a new "--for-debug" option to hash-object and > pack-objects that allows us to deliberately create broken > datastreams to test against. > > I think peff recently added helpers to t5303 to allow us test > corrupt pack streams, which is a way different from what you > envisioned above (i.e. "actively break pack-index") to test > breakages like the ones you were trying to test here. > > Having said all that, I do think the series that added new warnings, > errors and a test for the new warnings is an improvement without a > test for the new errors. So let's queue this, see if somebody comes > up a way to check for these error detection codepath on top of this > series.
It wasn't too painful to do one of them, and the result looks rather nice. It lets us add this patch on top of your series.
-- >8 -- Subject: [PATCH] t1450: make sure fsck detects a malformed tagger line
With "hash-object --literally", write a tag object that is not supposed to pass one of the new checks added to "fsck", and make sure that the new check catches the breakage.
Signed-off-by: Junio C Hamano <gitster@pobox.com> --- t/t1450-fsck.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh index 9118253..6ecb844 100755 --- a/t/t1450-fsck.sh +++ b/t/t1450-fsck.sh @@ -234,6 +234,25 @@ test_expect_success 'tag with incorrect tag name & missing tagger' ' grep "expected .tagger. line" out ' +test_expect_success 'tag with bad tagger' ' + sha=$(git rev-parse HEAD) && + cat >wrong-tag <<-EOF && + object $sha + type commit + tag not-quite-wrong + tagger Bad Tagger Name + + This is an invalid tag. + EOF + + tag=$(git hash-object --literally -t tag -w --stdin <wrong-tag) && + test_when_finished "remove_object $tag" && + echo $tag >.git/refs/tags/wrong && + test_when_finished "git update-ref -d refs/tags/wrong" && + test_must_fail git fsck --tags 2>out && + grep "error in tag .*: invalid author/committer" out +' + test_expect_success 'cleaned up' ' git fsck >actual 2>&1 && test_cmp empty actual
-- 2.1.0-459-g1bc3b2b