3 test_description='Test notes trees that also contain non-notes'
 
  12 commit refs/notes/commits
 
  13 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
 
  18 from refs/notes/commits^0
 
  25         git log | grep "^    " > output &&
 
  26         i=$number_of_commits &&
 
  27         while [ $i -gt 0 ]; do
 
  29                 echo "    note for commit #$i" &&
 
  32         test_cmp expect output
 
  35 test_expect_success "setup: create a couple of commits" '
 
  38         cat <<INPUT_END >input &&
 
  39 commit refs/heads/master
 
  40 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
 
  53         cat <<INPUT_END >>input &&
 
  54 commit refs/heads/master
 
  55 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
 
  66         git fast-import --quiet <input
 
  69 test_expect_success "create a notes tree with both notes and non-notes" '
 
  71         commit1=$(git rev-parse refs/heads/master^) &&
 
  72         commit2=$(git rev-parse refs/heads/master) &&
 
  74         cat <<INPUT_END >input &&
 
  75 commit refs/notes/commits
 
  76 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
 
  93         cat <<INPUT_END >>input &&
 
  94 commit refs/notes/commits
 
  95 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
 
 100 M 644 inline foobar/non-note.txt
 
 102 A non-note in a notes tree
 
 107 edited note for commit #2
 
 112         cat <<INPUT_END >>input &&
 
 113 commit refs/notes/commits
 
 114 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
 
 121 edited note for commit #1
 
 124 M 644 inline deadbeef
 
 126 non-note with SHA1-like name
 
 129 M 644 inline de/adbeef
 
 131 another non-note with SHA1-like name
 
 134 M 644 inline de/adbeefdeadbeefdeadbeefdeadbeefdeadbeef
 
 136 This is actually a valid note, albeit to a non-existing object.
 
 137 It is needed in order to trigger the "mishandling" of the dead/beef non-note.
 
 140 M 644 inline dead/beef
 
 142 yet another non-note with SHA1-like name
 
 146         git fast-import --quiet <input &&
 
 147         git config core.notesRef refs/notes/commits
 
 150 cat >expect <<EXPECT_END
 
 152     edited note for commit #2
 
 154     edited note for commit #1
 
 157 test_expect_success "verify contents of notes" '
 
 159         git log | grep "^    " > actual &&
 
 160         test_cmp expect actual
 
 163 cat >expect_nn1 <<EXPECT_END
 
 164 A non-note in a notes tree
 
 166 cat >expect_nn2 <<EXPECT_END
 
 167 non-note with SHA1-like name
 
 169 cat >expect_nn3 <<EXPECT_END
 
 170 another non-note with SHA1-like name
 
 172 cat >expect_nn4 <<EXPECT_END
 
 173 yet another non-note with SHA1-like name
 
 176 test_expect_success "verify contents of non-notes" '
 
 178         git cat-file -p refs/notes/commits:foobar/non-note.txt > actual_nn1 &&
 
 179         test_cmp expect_nn1 actual_nn1 &&
 
 180         git cat-file -p refs/notes/commits:deadbeef > actual_nn2 &&
 
 181         test_cmp expect_nn2 actual_nn2 &&
 
 182         git cat-file -p refs/notes/commits:de/adbeef > actual_nn3 &&
 
 183         test_cmp expect_nn3 actual_nn3 &&
 
 184         git cat-file -p refs/notes/commits:dead/beef > actual_nn4 &&
 
 185         test_cmp expect_nn4 actual_nn4
 
 188 test_expect_success "git-notes preserves non-notes" '
 
 191         git notes add -f -m "foo bar"
 
 194 test_expect_success "verify contents of non-notes after git-notes" '
 
 196         git cat-file -p refs/notes/commits:foobar/non-note.txt > actual_nn1 &&
 
 197         test_cmp expect_nn1 actual_nn1 &&
 
 198         git cat-file -p refs/notes/commits:deadbeef > actual_nn2 &&
 
 199         test_cmp expect_nn2 actual_nn2 &&
 
 200         git cat-file -p refs/notes/commits:de/adbeef > actual_nn3 &&
 
 201         test_cmp expect_nn3 actual_nn3 &&
 
 202         git cat-file -p refs/notes/commits:dead/beef > actual_nn4 &&
 
 203         test_cmp expect_nn4 actual_nn4