(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'test_description='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'test_description='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description)
          op: assign_op.Equal
          rhs: 
            {
              (SQ <'test git clone to cleanup after failure\n'> <'\n'> 
                <'This test covers the fact that if git clone fails, it should remove\n'> <'the directory it created, to avoid the user having to manually\n'> 
                <'remove the directory before attempting a clone again.'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'clone of non-existent source should fail'>)}
        {(SQ <'test_must_fail git clone foo bar'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'failed clone should not leave a directory'>)}
        {(SQ <'! test -d bar'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_create_repo>
      more_env: []
      words: [{<test_create_repo>} {<foo>}]
      redirects: []
      do_fork: T
    )
    (command.Subshell
      left: <Id.Op_LParen _>
      child: 
        (command.AndOr
          children: [
            (command.Simple
              blame_tok: <cd>
              more_env: []
              words: [{<cd>} {<foo>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <touch>
              more_env: []
              words: [{<touch>} {<file>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [{<git>} {<add>} {<file>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [{<git>} {<commit>} {<-m>} {(SQ <'add file'>)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (Redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
        )
      right: <Id.Right_Subshell _>
      redirects: []
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'clone of non-existent (relative to $PWD) source should fail'>)}
        {(SQ <'test_must_fail git clone ../foo baz'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'clone should work now that source exists'>)}
        {(SQ <'git clone foo bar'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'successful clone must leave the directory'>)}
        {(SQ <'test -d bar'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'failed clone --separate-git-dir should not leave any directories'>)}
        {
          (SQ <'\n'> <'\tmkdir foo/.git/objects.bak/ &&\n'> 
            <'\tmv foo/.git/objects/* foo/.git/objects.bak/ &&\n'> <'\ttest_must_fail git clone --separate-git-dir gitdir foo worktree &&\n'> 
            <'\ttest_must_fail test -e gitdir &&\n'> <'\ttest_must_fail test -e worktree &&\n'> <'\tmv foo/.git/objects.bak/* foo/.git/objects/ &&\n'> 
            <'\trmdir foo/.git/objects.bak\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)