(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: 
            {
              (SQ <'git checkout-index test.\n'> <'\n'> 
                <'This test registers the following filesystem structure in the\n'> <'cache:\n'> <'\n'> <'    path0       - a file\n'> <'    path1/file1 - a file in a directory\n'> <'\n'> 
                <'And then tries to checkout in a work tree that has the following:\n'> <'\n'> <'    path0/file0 - a file in a directory\n'> <'    path1       - a file\n'> <'\n'> 
                <'The git checkout-index command should fail when attempting to checkout\n'> <'path0, finding it is occupied by a directory, and path1/file1, finding\n'> 
                <'path1 is occupied by a non-directory.  With "-f" flag, it should remove\n'> <'the conflicting paths and succeed.\n'>
              )
            }
          spids: [13]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (command.Simple
      words: [{<date>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<path0>})]
      do_fork: T
    )
    (C {<mkdir>} {<path1>})
    (command.Simple
      words: [{<date>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'path1/file1'>})]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'git update-index --add various paths.'>)} 
      {(SQ <'git update-index --add path0 path1/file1'>)}
    )
    (C {<rm>} {<-fr>} {<path0>} {<path1>})
    (C {<mkdir>} {<path0>})
    (command.Simple
      words: [{<date>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'path0/file0'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<date>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<path1>})]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {(SQ <'git checkout-index without -f should fail on conflicting work tree.'>)} {(SQ <'test_must_fail git checkout-index -a'>)}
    )
    (C {<test_expect_success>} {(SQ <'git checkout-index with -f should succeed.'>)} 
      {(SQ <'git checkout-index -f -a'>)}
    )
    (C {<test_expect_success>} {(SQ <'git checkout-index conflicting paths.'>)} 
      {(SQ <'test -f path0 && test -d path1 && test -f path1/file1'>)}
    )
    (C {<test_expect_success>} {<SYMLINKS>} {(SQ <'checkout-index -f twice with --prefix'>)} 
      {
        (SQ <'\n'> <'\tmkdir -p tar/get &&\n'> <'\tln -s tar/get there &&\n'> <'\techo first &&\n'> 
          <'\tgit checkout-index -a -f --prefix=there/ &&\n'> <'\techo second &&\n'> <'\tgit checkout-index -a -f --prefix=there/\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)