Add selftests verifying concatenation of multiple notes for the same commit
Also verify that multiple references to the _same_ note blob are _not_ concatenated. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland committed
Oct 9, 2009 at 12:22 UTC
a099469bbcf273e76d81573229971956b4ef0700
1 file changed
+84
t/t3303-notes-subtrees.sh
+84
@@ -101,4 +101,88 @@ test_expect_success 'verify notes in 4/36-fanout' 'verify_notes'
101
test_expect_success 'test notes in 2/2/36-fanout' 'test_sha1_based "s|^\(..\)\(..\)|\1/\2/|"'
102
test_expect_success 'verify notes in 2/2/36-fanout' 'verify_notes'
103
104
+test_same_notes () {
105
+ (
106
+ start_note_commit &&
107
+ nr=$number_of_commits &&
108
+ git rev-list refs/heads/master |
109
+ while read sha1; do
110
+ first_note_path=$(echo "$sha1" | sed "$1")
111
+ second_note_path=$(echo "$sha1" | sed "$2")
112
+ cat <<INPUT_END &&
113
+M 100644 inline $second_note_path
114
+data <<EOF
115
+note for commit #$nr
116
+EOF
117
+
118
+M 100644 inline $first_note_path
119
+data <<EOF
120
+note for commit #$nr
121
+EOF
122
+
123
+INPUT_END
124
+
125
+ nr=$(($nr-1))
126
+ done
127
+ ) |
128
+ git fast-import --quiet
129
+}
130
+
131
+test_expect_success 'test same notes in 4/36-fanout and 2/38-fanout' 'test_same_notes "s|^..|&/|" "s|^....|&/|"'
132
+test_expect_success 'verify same notes in 4/36-fanout and 2/38-fanout' 'verify_notes'
133
+
134
+test_expect_success 'test same notes in 2/38-fanout and 2/2/36-fanout' 'test_same_notes "s|^\(..\)\(..\)|\1/\2/|" "s|^..|&/|"'
135
+test_expect_success 'verify same notes in 2/38-fanout and 2/2/36-fanout' 'verify_notes'
136
+
137
+test_expect_success 'test same notes in 4/36-fanout and 2/2/36-fanout' 'test_same_notes "s|^\(..\)\(..\)|\1/\2/|" "s|^....|&/|"'
138
+test_expect_success 'verify same notes in 4/36-fanout and 2/2/36-fanout' 'verify_notes'
139
+
140
+test_concatenated_notes () {
141
+ (
142
+ start_note_commit &&
143
+ nr=$number_of_commits &&
144
+ git rev-list refs/heads/master |
145
+ while read sha1; do
146
+ first_note_path=$(echo "$sha1" | sed "$1")
147
+ second_note_path=$(echo "$sha1" | sed "$2")
148
+ cat <<INPUT_END &&
149
+M 100644 inline $second_note_path
150
+data <<EOF
151
+second note for commit #$nr
152
+EOF
153
+
154
+M 100644 inline $first_note_path
155
+data <<EOF
156
+first note for commit #$nr
157
+EOF
158
+
159
+INPUT_END
160
+
161
+ nr=$(($nr-1))
162
+ done
163
+ ) |
164
+ git fast-import --quiet
165
+}
166
+
167
+verify_concatenated_notes () {
168
+ git log | grep "^ " > output &&
169
+ i=$number_of_commits &&
170
+ while [ $i -gt 0 ]; do
171
+ echo " commit #$i" &&
172
+ echo " first note for commit #$i" &&
173
+ echo " second note for commit #$i" &&
174
+ i=$(($i-1));
175
+ done > expect &&
176
+ test_cmp expect output
177
+}
178
+
179
+test_expect_success 'test notes in 4/36-fanout concatenated with 2/38-fanout' 'test_concatenated_notes "s|^..|&/|" "s|^....|&/|"'
180
+test_expect_success 'verify notes in 4/36-fanout concatenated with 2/38-fanout' 'verify_concatenated_notes'
181
+
182
+test_expect_success 'test notes in 2/38-fanout concatenated with 2/2/36-fanout' 'test_concatenated_notes "s|^\(..\)\(..\)|\1/\2/|" "s|^..|&/|"'
183
+test_expect_success 'verify notes in 2/38-fanout concatenated with 2/2/36-fanout' 'verify_concatenated_notes'
184
+
185
+test_expect_success 'test notes in 4/36-fanout concatenated with 2/2/36-fanout' 'test_concatenated_notes "s|^\(..\)\(..\)|\1/\2/|" "s|^....|&/|"'
186
+test_expect_success 'verify notes in 4/36-fanout concatenated with 2/2/36-fanout' 'verify_concatenated_notes'
187
+
188
test_done