t9301: Add 2nd testcase exposing bugs in fast-import's notes fanout handling
The previous patch exposed a bug in fast-import where _removing_ an existing note fails (when that note resides on a non-zero fanout level, and was added prior to this fast-import run). This patch demostrates the same issue when _changing_ an existing note (subject to the same circumstances). Discovered-by: Henrik Grubbström <grubba@roxen.com> Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
d1075414dc
commit
9ff5e21f0e
@ -505,6 +505,60 @@ test_expect_success 'verify that non-notes are untouched by a fanout change' '
|
|||||||
test_cmp expect_non-note3 actual
|
test_cmp expect_non-note3 actual
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
|
# Change the notes for the three top commits
|
||||||
|
test_tick
|
||||||
|
cat >input <<INPUT_END
|
||||||
|
commit refs/notes/many_notes
|
||||||
|
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
|
||||||
|
data <<COMMIT
|
||||||
|
changing notes for the top three commits
|
||||||
|
COMMIT
|
||||||
|
from refs/notes/many_notes^0
|
||||||
|
INPUT_END
|
||||||
|
|
||||||
|
rm expect
|
||||||
|
i=$num_commits
|
||||||
|
j=0
|
||||||
|
while test $j -lt 3
|
||||||
|
do
|
||||||
|
cat >>input <<INPUT_END
|
||||||
|
N inline refs/heads/many_commits~$j
|
||||||
|
data <<EOF
|
||||||
|
changed note for commit #$i
|
||||||
|
EOF
|
||||||
|
INPUT_END
|
||||||
|
cat >>expect <<EXPECT_END
|
||||||
|
commit #$i
|
||||||
|
changed note for commit #$i
|
||||||
|
EXPECT_END
|
||||||
|
i=$(($i - 1))
|
||||||
|
j=$(($j + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
test_expect_failure 'change a few existing notes' '
|
||||||
|
|
||||||
|
git fast-import <input &&
|
||||||
|
GIT_NOTES_REF=refs/notes/many_notes git log -n3 refs/heads/many_commits |
|
||||||
|
grep "^ " > actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_failure 'verify that changing notes respect existing fanout' '
|
||||||
|
|
||||||
|
# None of the entries in the top-level notes tree should be a full SHA1
|
||||||
|
git ls-tree --name-only refs/notes/many_notes |
|
||||||
|
while read path
|
||||||
|
do
|
||||||
|
if test $(expr length "$path") -ge 40
|
||||||
|
then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
remaining_notes=10
|
remaining_notes=10
|
||||||
test_tick
|
test_tick
|
||||||
cat >input <<INPUT_END
|
cat >input <<INPUT_END
|
||||||
|
Loading…
Reference in New Issue
Block a user