(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 quickfetch from local' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:20) (Token id:Id.Lit_Chars val:'\n' span_id:21) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\techo ichi >file &&\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\n' span_id:26) (Token id:Id.Lit_Chars val:'\tcnt=$( (\n' span_id:27) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit count-objects | sed -e "s/ *objects,.*//"\n'
            span_id: 28
          ) (Token id:Id.Lit_Chars val:'\t) ) &&\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\ttest $cnt -eq 3\n' span_id:30)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone without alternate' span_id:37))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:41) (Token id:Id.Lit_Chars val:'\n' span_id:42) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:43) (Token id:Id.Lit_Chars val:'\t\tmkdir cloned &&\n' span_id:44) 
          (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\t\tgit init-db &&\n' span_id:46) 
          (Token id:Id.Lit_Chars val:'\t\tgit remote add -f origin ..\n' span_id:47) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:48) 
          (Token id:Id.Lit_Chars val:'\tcnt=$( (\n' span_id:49) (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:50) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit count-objects | sed -e "s/ *objects,.*//"\n'
            span_id: 51
          ) (Token id:Id.Lit_Chars val:'\t) ) &&\n' span_id:52) 
          (Token id:Id.Lit_Chars val:'\ttest $cnt -eq 3\n' span_id:53)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'further commits in the original' span_id:60))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:64) (Token id:Id.Lit_Chars val:'\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\techo ni >file &&\n' span_id:67) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m second &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\n' span_id:69) (Token id:Id.Lit_Chars val:'\tcnt=$( (\n' span_id:70) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit count-objects | sed -e "s/ *objects,.*//"\n'
            span_id: 71
          ) (Token id:Id.Lit_Chars val:'\t) ) &&\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'\ttest $cnt -eq 6\n' span_id:73)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'copy commit and tree but not blob by hand' span_id:80))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:84) (Token id:Id.Lit_Chars val:'\n' span_id:85) 
          (Token id:Id.Lit_Chars val:'\tgit rev-list --objects HEAD |\n' span_id:86) (Token id:Id.Lit_Chars val:'\tgit pack-objects --stdout |\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:88) (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\t\tgit unpack-objects\n' span_id:90) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\n' span_id:92) 
          (Token id:Id.Lit_Chars val:'\tcnt=$( (\n' span_id:93) (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:94) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit count-objects | sed -e "s/ *objects,.*//"\n'
            span_id: 95
          ) (Token id:Id.Lit_Chars val:'\t) ) &&\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'\ttest $cnt -eq 6 &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\n' span_id:98) 
          (Token
            id: Id.Lit_Chars
            val: '\tblob=$(git rev-parse HEAD:file | sed -e "s|..|&/|") &&\n'
            span_id: 99
          ) (Token id:Id.Lit_Chars val:'\ttest -f "cloned/.git/objects/$blob" &&\n' span_id:100) 
          (Token
            id: Id.Lit_Chars
            val: '\trm -f "cloned/.git/objects/$blob" &&\n'
            span_id: 101
          ) (Token id:Id.Lit_Chars val:'\n' span_id:102) (Token id:Id.Lit_Chars val:'\tcnt=$( (\n' span_id:103) 
          (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\t\tgit count-objects | sed -e "s/ *objects,.*//"\n' span_id:105) 
          (Token id:Id.Lit_Chars val:'\t) ) &&\n' span_id:106) (Token id:Id.Lit_Chars val:'\ttest $cnt -eq 5\n' span_id:107) 
          (Token id:Id.Lit_Chars val:'\n' span_id:108)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'quickfetch should not leave a corrupted repository'
            span_id: 115
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:119) (Token id:Id.Lit_Chars val:'\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:121) (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:122) 
          (Token id:Id.Lit_Chars val:'\t\tgit fetch\n' span_id:123) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\n' span_id:125) 
          (Token id:Id.Lit_Chars val:'\tcnt=$( (\n' span_id:126) (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:127) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit count-objects | sed -e "s/ *objects,.*//"\n'
            span_id: 128
          ) (Token id:Id.Lit_Chars val:'\t) ) &&\n' span_id:129) 
          (Token id:Id.Lit_Chars val:'\ttest $cnt -eq 6\n' span_id:130) (Token id:Id.Lit_Chars val:'\n' span_id:131)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'quickfetch should not copy from alternate' span_id:138))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:142) (Token id:Id.Lit_Chars val:'\n' span_id:143) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:144) (Token id:Id.Lit_Chars val:'\t\tmkdir quickclone &&\n' span_id:145) 
          (Token id:Id.Lit_Chars val:'\t\tcd quickclone &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\t\tgit init-db &&\n' span_id:147) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t(cd ../.git/objects && pwd) >.git/objects/info/alternates &&\n'
            span_id: 148
          ) (Token id:Id.Lit_Chars val:'\t\tgit remote add origin .. &&\n' span_id:149) 
          (Token id:Id.Lit_Chars val:'\t\tgit fetch -k -k\n' span_id:150) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:151) 
          (Token id:Id.Lit_Chars val:'\tobj_cnt=$( (\n' span_id:152) (Token id:Id.Lit_Chars val:'\t\tcd quickclone &&\n' span_id:153) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit count-objects | sed -e "s/ *objects,.*//"\n'
            span_id: 154
          ) (Token id:Id.Lit_Chars val:'\t) ) &&\n' span_id:155) 
          (Token id:Id.Lit_Chars val:'\tpck_cnt=$( (\n' span_id:156) (Token id:Id.Lit_Chars val:'\t\tcd quickclone &&\n' span_id:157) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit count-objects -v | sed -n -e "/packs:/{\n'
            span_id: 158
          ) (Token id:Id.Lit_Chars val:'\t\t\t\ts/packs://\n' span_id:159) 
          (Token id:Id.Lit_Chars val:'\t\t\t\tp\n' span_id:160) (Token id:Id.Lit_Chars val:'\t\t\t\tq\n' span_id:161) 
          (Token id:Id.Lit_Chars val:'\t\t\t}"\n' span_id:162) (Token id:Id.Lit_Chars val:'\t) ) &&\n' span_id:163) 
          (Token id:Id.Lit_Chars val:'\torigin_master=$( (\n' span_id:164) (Token id:Id.Lit_Chars val:'\t\tcd quickclone &&\n' span_id:165) 
          (Token id:Id.Lit_Chars val:'\t\tgit rev-parse origin/master\n' span_id:166) (Token id:Id.Lit_Chars val:'\t) ) &&\n' span_id:167) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "loose objects: $obj_cnt, packfiles: $pck_cnt" &&\n'
            span_id: 168
          ) (Token id:Id.Lit_Chars val:'\ttest $obj_cnt -eq 0 &&\n' span_id:169) 
          (Token id:Id.Lit_Chars val:'\ttest $pck_cnt -eq 0 &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\ttest z$origin_master = z$(git rev-parse master)\n' span_id:171) 
          (Token id:Id.Lit_Chars val:'\n' span_id:172)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'quickfetch should handle ~1000 refs (on Windows)'
            span_id: 179
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:183) (Token id:Id.Lit_Chars val:'\n' span_id:184) 
          (Token id:Id.Lit_Chars val:'\tgit gc &&\n' span_id:185) (Token id:Id.Lit_Chars val:'\thead=$(git rev-parse HEAD) &&\n' span_id:186) 
          (Token
            id: Id.Lit_Chars
            val: '\tbranchprefix="$head refs/heads/branch" &&\n'
            span_id: 187
          ) (Token id:Id.Lit_Chars val:'\tfor i in 0 1 2 3 4 5 6 7 8 9; do\n' span_id:188) 
          (Token id:Id.Lit_Chars val:'\t\tfor j in 0 1 2 3 4 5 6 7 8 9; do\n' span_id:189) (Token id:Id.Lit_Chars val:'\t\t\tfor k in 0 1 2 3 4 5 6 7 8 9; do\n' span_id:190) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\t\techo "$branchprefix$i$j$k" >> .git/packed-refs\n'
            span_id: 191
          ) (Token id:Id.Lit_Chars val:'\t\t\tdone\n' span_id:192) 
          (Token id:Id.Lit_Chars val:'\t\tdone\n' span_id:193) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:194) (Token id:Id.Lit_Chars val:'\t(\n' span_id:195) 
          (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:196) (Token id:Id.Lit_Chars val:'\t\tgit fetch &&\n' span_id:197) 
          (Token id:Id.Lit_Chars val:'\t\tgit fetch\n' span_id:198) (Token id:Id.Lit_Chars val:'\t)\n' span_id:199) (Token id:Id.Lit_Chars val:'\n' span_id:200)
        )
      }
    )
    (C {(test_done)})
  ]
)