Skip to content

Commit

Permalink
transfer.fsckObjects tests: untangle confusing setup
Browse files Browse the repository at this point in the history
The tests for transfer.fsckObjects have grown organically over time to
not make much sense.

Initially when these were added in b10a535 ("test: fetch/receive
with fsckobjects", 2011-09-04) they were only testing the "corrupt or
missing object" case, but later on in 70a4ae7 ("fsck: add a simple
test for receive.fsck.<msg-id>", 2015-06-22) they were expanded to
check for the fsck.<msg-id> feature.

The problem was that we still kept the same corrupt test repo, making
it harder to add new tests that check the entirety of the repository
between operations via "git fsck" to see whether only known issues
that can be ignored with fsck.<msg-id> have occurred.

The tests only did the right thing because such a full "git fsck" was
never done after a certain point, and instead we were only
manipulating specific refs. This makes it harder to add new tests, and
none of the fsck.<msg-id> tests relied on this.

So let's not confuse the two and repair the corrupt repository before
we run the fsck.<msg-id> tests.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
avar authored and gitster committed Jul 27, 2018
1 parent 720dae5 commit 8b55b9d
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion t/t5504-fetch-receive-strict.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@
test_description='fetch/receive strict mode'
. ./test-lib.sh

test_expect_success setup '
test_expect_success 'setup and inject "corrupt or missing" object' '
echo hello >greetings &&
git add greetings &&
git commit -m greetings &&
S=$(git rev-parse :greetings | sed -e "s|^..|&/|") &&
X=$(echo bye | git hash-object -w --stdin | sed -e "s|^..|&/|") &&
echo $S >S &&
echo $X >X &&
cp .git/objects/$S .git/objects/$S.back &&
mv -f .git/objects/$X .git/objects/$S &&
test_must_fail git fsck
Expand Down Expand Up @@ -115,6 +118,13 @@ test_expect_success 'push with transfer.fsckobjects' '
test_cmp exp act
'

test_expect_success 'repair the "corrupt or missing" object' '
mv -f .git/objects/$(cat S) .git/objects/$(cat X) &&
mv .git/objects/$(cat S).back .git/objects/$(cat S) &&
rm -rf .git/objects/$(cat X) &&
git fsck
'

cat >bogus-commit <<EOF
tree $EMPTY_TREE
author Bugs Bunny 1234567890 +0000
Expand Down

0 comments on commit 8b55b9d

Please sign in to comment.