Re: [PATCH 1/5] t5312: test object deletion code paths in a corrupted repository
- From
Jeff King <peff@peff.net>
- Date
- Mar 17, 2015, 18:55 UTC
- Message-ID
- <20150317185550.GA14550@peff.net>
- In-Reply-To
- <5508739A.5030608@kdbg.org>
On Tue, Mar 17, 2015 at 07:34:02PM +0100, Johannes Sixt wrote:
Show 12 quoted lines
> Am 17.03.2015 um 08:28 schrieb Jeff King: > >+test_expect_success 'create history reachable only from a bogus-named ref' ' > >+ test_tick && git commit --allow-empty -m master && > >+ base=$(git rev-parse HEAD) && > >+ test_tick && git commit --allow-empty -m bogus && > >+ bogus=$(git rev-parse HEAD) && > >+ git cat-file commit $bogus >saved && > >+ echo $bogus >.git/refs/heads/bogus:name && > > This causes headaches on Windows: It creates an empty file, named "bogus", > with all the data diverted to the alternate data stream named "name". > Needless to say that this...
Ah, yes. Windows. Our usual workaround would be to put it straight into packed-refs, but in this case, the test really does need the badly named ref in the file system. But...
Show 6 quoted lines
> >+test_expect_success 'clean up bogus ref' ' > >+ rm .git/refs/heads/bogus:name > >+' > > does not remove the file "bogus", but only the alternate data stream (if at > all---I forgot to check). How about .git/refs/heads/bogus..nam.e?
Yes, that works. The colon is what originally brought my attention to this case, but anything that fails git-check-ref-format is fine. I've squashed this in:
diff --git a/t/t5312-prune-corruption.sh b/t/t5312-prune-corruption.sh index 167031e..1001a69 100755 --- a/t/t5312-prune-corruption.sh +++ b/t/t5312-prune-corruption.sh @@ -21,7 +21,7 @@ test_expect_success 'create history reachable only from a bogus-named ref' ' test_tick && git commit --allow-empty -m bogus && bogus=$(git rev-parse HEAD) && git cat-file commit $bogus >saved && - echo $bogus >.git/refs/heads/bogus:name && + echo $bogus >.git/refs/heads/bogus..name && git reset --hard HEAD^ ' @@ -47,7 +47,7 @@ test_expect_failure 'destructive repack keeps packed object' ' # subsequent tests will have different corruptions test_expect_success 'clean up bogus ref' ' - rm .git/refs/heads/bogus:name + rm .git/refs/heads/bogus..name ' test_expect_success 'create history with missing tip commit' ' I assumed the final "." in your example wasn't significant (it is not to git), but let me know if I've run afoul of another weird restriction. :) Thanks. -Peff