mirror of
https://github.com/git/git.git
synced 2024-11-28 12:34:08 +08:00
99094a7ad4
These are tests which are missing a link in their &&-chain, but during a setup phase. We may fail to notice failure in commands that build the test environment, but these are typically not expected to fail at all (but it's still good to double-check that our test environment is what we expect). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
50 lines
1.3 KiB
Bash
Executable File
50 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='filter-branch removal of trees with null sha1'
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'setup: base commits' '
|
|
test_commit one &&
|
|
test_commit two &&
|
|
test_commit three
|
|
'
|
|
|
|
test_expect_success 'setup: a commit with a bogus null sha1 in the tree' '
|
|
{
|
|
git ls-tree HEAD &&
|
|
printf "160000 commit $_z40\\tbroken\\n"
|
|
} >broken-tree &&
|
|
echo "add broken entry" >msg &&
|
|
|
|
tree=$(git mktree <broken-tree) &&
|
|
test_tick &&
|
|
commit=$(git commit-tree $tree -p HEAD <msg) &&
|
|
git update-ref HEAD "$commit"
|
|
'
|
|
|
|
# we have to make one more commit on top removing the broken
|
|
# entry, since otherwise our index does not match HEAD (and filter-branch will
|
|
# complain). We could make the index match HEAD, but doing so would involve
|
|
# writing a null sha1 into the index.
|
|
test_expect_success 'setup: bring HEAD and index in sync' '
|
|
test_tick &&
|
|
git commit -a -m "back to normal"
|
|
'
|
|
|
|
test_expect_success 'filter commands are still checked' '
|
|
test_must_fail git filter-branch \
|
|
--force --prune-empty \
|
|
--index-filter "git rm --cached --ignore-unmatch three.t"
|
|
'
|
|
|
|
test_expect_success 'removing the broken entry works' '
|
|
echo three >expect &&
|
|
git filter-branch \
|
|
--force --prune-empty \
|
|
--index-filter "git rm --cached --ignore-unmatch broken" &&
|
|
git log -1 --format=%s >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_done
|