(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'Test that adding/removing many notes triggers automatic fanout restructuring' span_id: 6 ) ) } spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'creating many notes with git-notes' span_id:18))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) (Token id:Id.Lit_Chars val:'\tnum_notes=300 &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\ti=0 &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\twhile test $i -lt $num_notes\n' span_id:25) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:26) (Token id:Id.Lit_Chars val:'\t\ti=$(($i + 1)) &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:28) (Token id: Id.Lit_Chars val: '\t\techo "file for commit #$i" > file &&\n' span_id: 29 ) (Token id:Id.Lit_Chars val:'\t\tgit add file &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\t\tgit commit -q -m "commit #$i" &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\t\tgit notes add -m "note #$i" || return 1\n' span_id:32) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:33) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'many notes created correctly with git-notes' span_id:40))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:44) (Token id:Id.Lit_Chars val:'\tgit log | grep "^ " > output &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\ti=300 &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\twhile test $i -gt 0\n' span_id:47) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:48) (Token id:Id.Lit_Chars val:'\t\techo " commit #$i" &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\t\techo " note #$i" &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\t\ti=$(($i - 1));\n' span_id:51) (Token id:Id.Lit_Chars val:'\tdone > expect &&\n' span_id:52) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:53) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'many notes created with git-notes triggers fanout' span_id: 60 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:64) (Token id: Id.Lit_Chars val: '\t# Expect entire notes tree to have a fanout == 1\n' span_id: 65 ) (Token id:Id.Lit_Chars val:'\tgit ls-tree -r --name-only refs/notes/commits |\n' span_id:66) (Token id:Id.Lit_Chars val:'\twhile read path\n' span_id:67) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:68) (Token id:Id.Lit_Chars val:'\t\tcase "$path" in\n' span_id:69) (Token id:Id.Lit_Chars val:'\t\t??/??????????????????????????????????????)\n' span_id:70) (Token id:Id.Lit_Chars val:'\t\t\t: true\n' span_id:71) (Token id:Id.Lit_Chars val:'\t\t\t;;\n' span_id:72) (Token id:Id.Lit_Chars val:'\t\t*)\n' span_id:73) (Token id: Id.Lit_Chars val: '\t\t\techo "Invalid path \\"$path\\"" &&\n' span_id: 74 ) (Token id:Id.Lit_Chars val:'\t\t\treturn 1\n' span_id:75) (Token id:Id.Lit_Chars val:'\t\t\t;;\n' span_id:76) (Token id:Id.Lit_Chars val:'\t\tesac\n' span_id:77) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:78) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'deleting most notes with git-notes' span_id:85))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:89) (Token id:Id.Lit_Chars val:'\tnum_notes=250 &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\ti=0 &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\tgit rev-list HEAD |\n' span_id:92) (Token id:Id.Lit_Chars val:'\twhile test $i -lt $num_notes && read sha1\n' span_id:93) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:94) (Token id:Id.Lit_Chars val:'\t\ti=$(($i + 1)) &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:96) (Token id:Id.Lit_Chars val:'\t\tgit notes remove "$sha1" ||\n' span_id:97) (Token id:Id.Lit_Chars val:'\t\texit 1\n' span_id:98) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:99) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'most notes deleted correctly with git-notes' span_id:106))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:110) (Token id: Id.Lit_Chars val: '\tgit log HEAD~250 | grep "^ " > output &&\n' span_id: 111 ) (Token id:Id.Lit_Chars val:'\ti=50 &&\n' span_id:112) (Token id:Id.Lit_Chars val:'\twhile test $i -gt 0\n' span_id:113) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:114) (Token id:Id.Lit_Chars val:'\t\techo " commit #$i" &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\t\techo " note #$i" &&\n' span_id:116) (Token id:Id.Lit_Chars val:'\t\ti=$(($i - 1));\n' span_id:117) (Token id:Id.Lit_Chars val:'\tdone > expect &&\n' span_id:118) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:119) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'deleting most notes triggers fanout consolidation' span_id: 126 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:130) (Token id: Id.Lit_Chars val: '\t# Expect entire notes tree to have a fanout == 0\n' span_id: 131 ) (Token id:Id.Lit_Chars val:'\tgit ls-tree -r --name-only refs/notes/commits |\n' span_id:132) (Token id:Id.Lit_Chars val:'\twhile read path\n' span_id:133) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:134) (Token id:Id.Lit_Chars val:'\t\tcase "$path" in\n' span_id:135) (Token id:Id.Lit_Chars val:'\t\t????????????????????????????????????????)\n' span_id:136) (Token id:Id.Lit_Chars val:'\t\t\t: true\n' span_id:137) (Token id:Id.Lit_Chars val:'\t\t\t;;\n' span_id:138) (Token id:Id.Lit_Chars val:'\t\t*)\n' span_id:139) (Token id:Id.Lit_Chars val:'\t\t\techo "Invalid path \\"$path\\"" &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\t\t\treturn 1\n' span_id:141) (Token id:Id.Lit_Chars val:'\t\t\t;;\n' span_id:142) (Token id:Id.Lit_Chars val:'\t\tesac\n' span_id:143) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:144) ) } ) (C {(test_done)}) ] )