(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 index-pack handling of delta cycles in packfiles'
                  span_id: 6
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-pack.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:A)
          op: assign_op.Equal
          rhs: {(01d7713666f4de822776c7622c10f1b07de280dc)}
          spids: [24]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:B)
          op: assign_op.Equal
          rhs: {(e68fe8129b546b101aee9510c5328e7f21ca1d18)}
          spids: [27]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'index-pack works with a single delta (A->B)' span_id:37))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:41) 
          (Token id:Id.Lit_Chars val:'\tclear_packs &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\t{\n' span_id:43) 
          (Token id:Id.Lit_Chars val:'\t\tpack_header 2 &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\t\tpack_obj $A $B &&\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\t\tpack_obj $B\n' span_id:46) (Token id:Id.Lit_Chars val:'\t} >ab.pack &&\n' span_id:47) 
          (Token id:Id.Lit_Chars val:'\tpack_trailer ab.pack &&\n' span_id:48) (Token id:Id.Lit_Chars val:'\tgit index-pack --stdin <ab.pack &&\n' span_id:49) 
          (Token id:Id.Lit_Chars val:'\tgit cat-file -t $A &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\tgit cat-file -t $B\n' span_id:51)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'index-pack works with a single delta (B->A)' span_id:58))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:62) 
          (Token id:Id.Lit_Chars val:'\tclear_packs &&\n' span_id:63) (Token id:Id.Lit_Chars val:'\t{\n' span_id:64) 
          (Token id:Id.Lit_Chars val:'\t\tpack_header 2 &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\t\tpack_obj $A &&\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\t\tpack_obj $B $A\n' span_id:67) (Token id:Id.Lit_Chars val:'\t} >ba.pack &&\n' span_id:68) 
          (Token id:Id.Lit_Chars val:'\tpack_trailer ba.pack &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\tgit index-pack --stdin <ba.pack &&\n' span_id:70) 
          (Token id:Id.Lit_Chars val:'\tgit cat-file -t $A &&\n' span_id:71) (Token id:Id.Lit_Chars val:'\tgit cat-file -t $B\n' span_id:72)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'index-pack detects missing base objects' span_id:79))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:83) 
          (Token id:Id.Lit_Chars val:'\tclear_packs &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\t{\n' span_id:85) 
          (Token id:Id.Lit_Chars val:'\t\tpack_header 1 &&\n' span_id:86) (Token id:Id.Lit_Chars val:'\t\tpack_obj $A $B\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\t} >missing.pack &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\tpack_trailer missing.pack &&\n' span_id:89) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git index-pack --fix-thin --stdin <missing.pack\n'
            span_id: 90
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'index-pack detects REF_DELTA cycles' span_id:97))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:101) 
          (Token id:Id.Lit_Chars val:'\tclear_packs &&\n' span_id:102) (Token id:Id.Lit_Chars val:'\t{\n' span_id:103) 
          (Token id:Id.Lit_Chars val:'\t\tpack_header 2 &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\t\tpack_obj $A $B &&\n' span_id:105) 
          (Token id:Id.Lit_Chars val:'\t\tpack_obj $B $A\n' span_id:106) (Token id:Id.Lit_Chars val:'\t} >cycle.pack &&\n' span_id:107) 
          (Token id:Id.Lit_Chars val:'\tpack_trailer cycle.pack &&\n' span_id:108) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git index-pack --fix-thin --stdin <cycle.pack\n'
            span_id: 109
          )
        )
      }
    )
    (C {(test_expect_failure)} 
      {(SQ (Token id:Id.Lit_Chars val:'failover to an object in another pack' span_id:116))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'\tclear_packs &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\tgit index-pack --stdin <ab.pack &&\n' span_id:122) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit index-pack --stdin --fix-thin <cycle.pack\n'
            span_id: 123
          )
        )
      }
    )
    (C {(test_expect_failure)} 
      {(SQ (Token id:Id.Lit_Chars val:'failover to a duplicate object in the same pack' span_id:130))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:134) 
          (Token id:Id.Lit_Chars val:'\tclear_packs &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\t{\n' span_id:136) 
          (Token id:Id.Lit_Chars val:'\t\tpack_header 3 &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\t\tpack_obj $A $B &&\n' span_id:138) 
          (Token id:Id.Lit_Chars val:'\t\tpack_obj $B $A &&\n' span_id:139) (Token id:Id.Lit_Chars val:'\t\tpack_obj $A\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\t} >recoverable.pack &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\tpack_trailer recoverable.pack &&\n' span_id:142) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit index-pack --fix-thin --stdin <recoverable.pack\n'
            span_id: 143
          )
        )
      }
    )
    (C {(test_done)})
  ]
)