Browse Source

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>
maint
Johan Herland 14 years ago committed by Junio C Hamano
parent
commit
9ff5e21f0e
  1. 54
      t/t9301-fast-import-notes.sh

54
t/t9301-fast-import-notes.sh

@ -505,6 +505,60 @@ test_expect_success 'verify that non-notes are untouched by a fanout change' ' @@ -505,6 +505,60 @@ test_expect_success 'verify that non-notes are untouched by a fanout change' '
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
test_tick
cat >input <<INPUT_END

Loading…
Cancel
Save