(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'some bundle related tests'>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (C {<test_expect_success>} {(SQ <setup>)} 
      {
        (SQ <'\n'> <'\ttest_commit initial &&\n'> <'\ttest_tick &&\n'> <'\tgit tag -m tag tag &&\n'> 
          <'\ttest_commit second &&\n'> <'\ttest_commit third &&\n'> <'\tgit tag -d initial &&\n'> <'\tgit tag -d second &&\n'> 
          <'\tgit tag -d third\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'annotated tags can be excluded by rev-list options'>)} 
      {
        (SQ <'\n'> <'\tgit bundle create bundle --all --since=7.Apr.2005.15:14:00.-0700 &&\n'> 
          <'\tgit ls-remote bundle > output &&\n'> <'\tgrep tag output &&\n'> <'\tgit bundle create bundle --all --since=7.Apr.2005.15:16:00.-0700 &&\n'> 
          <'\tgit ls-remote bundle > output &&\n'> <'\t! grep tag output\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'die if bundle file cannot be created'>)} 
      {(SQ <'\n'> <'\tmkdir adir &&\n'> <'\ttest_must_fail git bundle create adir --all\n'>)}
    )
    (C {<test_expect_failure>} {(SQ <'bundle --stdin'>)} 
      {
        (SQ <'\n'> <'\techo master | git bundle create stdin-bundle.bdl --stdin &&\n'> 
          <'\tgit ls-remote stdin-bundle.bdl >output &&\n'> <'\tgrep master output\n'>
        )
      }
    )
    (C {<test_expect_failure>} {(SQ <'bundle --stdin <rev-list options>'>)} 
      {
        (SQ <'\n'> <'\techo master | git bundle create hybrid-bundle.bdl --stdin tag &&\n'> 
          <'\tgit ls-remote hybrid-bundle.bdl >output &&\n'> <'\tgrep master output\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'empty bundle file is rejected'>)} 
      {(SQ <'\n'> <'\t: >empty-bundle &&\n'> <'\ttest_must_fail git fetch empty-bundle\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'ridiculously long subject in boundary'>)} 
      {
        (SQ <'\n'> <'\t: >file4 &&\n'> <'\ttest_tick &&\n'> <'\tgit add file4 &&\n'> 
          <'\tprintf "%01200d\\n" 0 | git commit -F - &&\n'> <'\ttest_commit fifth &&\n'> <'\tgit bundle create long-subject-bundle.bdl HEAD^..HEAD &&\n'> 
          <'\tgit bundle list-heads long-subject-bundle.bdl >heads &&\n'> <'\ttest -s heads &&\n'> <'\tgit fetch long-subject-bundle.bdl &&\n'> 
          <'\tsed -n "/^-/{p;q;}" long-subject-bundle.bdl >boundary &&\n'> <'\tgrep "^-[0-9a-f]\\\\{40\\\\} " boundary\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'prerequisites with an empty commit message'>)} 
      {
        (SQ <'\n'> <'\t: >file1 &&\n'> <'\tgit add file1 &&\n'> <'\ttest_tick &&\n'> 
          <'\tgit commit --allow-empty-message -m "" &&\n'> <'\ttest_commit file2 &&\n'> <'\tgit bundle create bundle HEAD^.. &&\n'> 
          <'\tgit bundle verify bundle\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)