(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git status and symlinks'>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (C {<test_expect_success>} {(SQ <setup>)} 
      {
        (SQ <'\n'> <'\techo .gitignore >.gitignore &&\n'> <'\techo actual >>.gitignore &&\n'> 
          <'\techo expect >>.gitignore &&\n'> <'\tmkdir dir &&\n'> <'\techo x >dir/file1 &&\n'> <'\techo y >dir/file2 &&\n'> <'\tgit add dir &&\n'> 
          <'\tgit commit -m initial &&\n'> <'\tgit tag initial\n'>
        )
      }
    )
    (C {<test_expect_success>} {<SYMLINKS>} {(SQ <'symlink to a directory'>)} 
      {
        (SQ <'\n'> <'\ttest_when_finished "rm symlink" &&\n'> <'\tln -s dir symlink &&\n'> 
          <'\techo "?? symlink" >expect &&\n'> <'\tgit status --porcelain >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {<SYMLINKS>} {(SQ <'symlink replacing a directory'>)} 
      {
        (SQ <'\n'> <'\ttest_when_finished "rm -rf copy && git reset --hard initial" &&\n'> 
          <'\tmkdir copy &&\n'> <'\tcp dir/file1 copy/file1 &&\n'> <'\techo "changed in copy" >copy/file2 &&\n'> 
          <'\tgit add copy &&\n'> <'\tgit commit -m second &&\n'> <'\trm -rf copy &&\n'> <'\tln -s dir copy &&\n'> 
          <'\techo " D copy/file1" >expect &&\n'> <'\techo " D copy/file2" >>expect &&\n'> <'\techo "?? copy" >>expect &&\n'> 
          <'\tgit status --porcelain >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)