Skip to content

Commit

Permalink
t9301: Add 2nd testcase exposing bugs in fast-import's notes fanout h…
Browse files Browse the repository at this point in the history
…andling

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 <[email protected]>
Signed-off-by: Johan Herland <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
jherland authored and gitster committed Nov 29, 2011
1 parent d107541 commit 9ff5e21
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions t/t9301-fast-import-notes.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 9ff5e21

Please sign in to comment.