(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'Test that adding/removing many notes triggers automatic fanout restructuring'>)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <'creating many notes with git-notes'>)} 
      {
        (SQ <'\n'> <'\tnum_notes=300 &&\n'> <'\ti=0 &&\n'> <'\twhile test $i -lt $num_notes\n'> 
          <'\tdo\n'> <'\t\ti=$(($i + 1)) &&\n'> <'\t\ttest_tick &&\n'> <'\t\techo "file for commit #$i" > file &&\n'> 
          <'\t\tgit add file &&\n'> <'\t\tgit commit -q -m "commit #$i" &&\n'> <'\t\tgit notes add -m "note #$i" || return 1\n'> 
          <'\tdone\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'many notes created correctly with git-notes'>)} 
      {
        (SQ <'\n'> <'\tgit log | grep "^    " > output &&\n'> <'\ti=300 &&\n'> 
          <'\twhile test $i -gt 0\n'> <'\tdo\n'> <'\t\techo "    commit #$i" &&\n'> <'\t\techo "    note #$i" &&\n'> <'\t\ti=$(($i - 1));\n'> 
          <'\tdone > expect &&\n'> <'\ttest_cmp expect output\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'many notes created with git-notes triggers fanout'>)} 
      {
        (SQ <'\n'> <'\t# Expect entire notes tree to have a fanout == 1\n'> 
          <'\tgit ls-tree -r --name-only refs/notes/commits |\n'> <'\twhile read path\n'> <'\tdo\n'> <'\t\tcase "$path" in\n'> 
          <'\t\t??/??????????????????????????????????????)\n'> <'\t\t\t: true\n'> <'\t\t\t;;\n'> <'\t\t*)\n'> <'\t\t\techo "Invalid path \\"$path\\"" &&\n'> 
          <'\t\t\treturn 1\n'> <'\t\t\t;;\n'> <'\t\tesac\n'> <'\tdone\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'deleting most notes with git-notes'>)} 
      {
        (SQ <'\n'> <'\tnum_notes=250 &&\n'> <'\ti=0 &&\n'> <'\tgit rev-list HEAD |\n'> 
          <'\twhile test $i -lt $num_notes && read sha1\n'> <'\tdo\n'> <'\t\ti=$(($i + 1)) &&\n'> <'\t\ttest_tick &&\n'> <'\t\tgit notes remove "$sha1" ||\n'> 
          <'\t\texit 1\n'> <'\tdone\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'most notes deleted correctly with git-notes'>)} 
      {
        (SQ <'\n'> <'\tgit log HEAD~250 | grep "^    " > output &&\n'> <'\ti=50 &&\n'> 
          <'\twhile test $i -gt 0\n'> <'\tdo\n'> <'\t\techo "    commit #$i" &&\n'> <'\t\techo "    note #$i" &&\n'> <'\t\ti=$(($i - 1));\n'> 
          <'\tdone > expect &&\n'> <'\ttest_cmp expect output\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'deleting most notes triggers fanout consolidation'>)} 
      {
        (SQ <'\n'> <'\t# Expect entire notes tree to have a fanout == 0\n'> 
          <'\tgit ls-tree -r --name-only refs/notes/commits |\n'> <'\twhile read path\n'> <'\tdo\n'> <'\t\tcase "$path" in\n'> 
          <'\t\t????????????????????????????????????????)\n'> <'\t\t\t: true\n'> <'\t\t\t;;\n'> <'\t\t*)\n'> <'\t\t\techo "Invalid path \\"$path\\"" &&\n'> 
          <'\t\t\treturn 1\n'> <'\t\t\t;;\n'> <'\t\tesac\n'> <'\tdone\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)