(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'read-tree -u --reset'>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (C {<.>} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) <'/lib-read-tree.sh'>})
    (C {<test_expect_success>} {(SQ <setup>)} 
      {
        (SQ <'\n'> <'\tgit init &&\n'> <'\tmkdir df &&\n'> <'\techo content >df/file &&\n'> 
          <'\tgit add df/file &&\n'> <'\tgit commit -m one &&\n'> <'\tgit ls-files >expect &&\n'> <'\trm -rf df &&\n'> 
          <'\techo content >df &&\n'> <'\tgit add df &&\n'> <'\techo content >new &&\n'> <'\tgit add new &&\n'> <'\tgit commit -m two\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'reset should work'>)} 
      {
        (SQ <'\n'> <'\tread_tree_u_must_succeed -u --reset HEAD^ &&\n'> <'\tgit ls-files >actual &&\n'> 
          <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'reset should remove remnants from a failed merge'>)} 
      {
        (SQ <'\n'> <'\tread_tree_u_must_succeed --reset -u HEAD &&\n'> 
          <'\tgit ls-files -s >expect &&\n'> <'\tsha1=$(git rev-parse :new) &&\n'> <'\t(\n'> <'\t\techo "100644 $sha1 1\told"\n'> 
          <'\t\techo "100644 $sha1 3\told"\n'> <'\t) | git update-index --index-info &&\n'> <'\t>old &&\n'> <'\tgit ls-files -s &&\n'> 
          <'\tread_tree_u_must_succeed --reset -u HEAD &&\n'> <'\tgit ls-files -s >actual &&\n'> <'\t! test -f old\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'two-way reset should remove remnants too'>)} 
      {
        (SQ <'\n'> <'\tread_tree_u_must_succeed --reset -u HEAD &&\n'> 
          <'\tgit ls-files -s >expect &&\n'> <'\tsha1=$(git rev-parse :new) &&\n'> <'\t(\n'> <'\t\techo "100644 $sha1 1\told"\n'> 
          <'\t\techo "100644 $sha1 3\told"\n'> <'\t) | git update-index --index-info &&\n'> <'\t>old &&\n'> <'\tgit ls-files -s &&\n'> 
          <'\tread_tree_u_must_succeed --reset -u HEAD HEAD &&\n'> <'\tgit ls-files -s >actual &&\n'> <'\t! test -f old\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'Porcelain reset should remove remnants too'>)} 
      {
        (SQ <'\n'> <'\tread_tree_u_must_succeed --reset -u HEAD &&\n'> 
          <'\tgit ls-files -s >expect &&\n'> <'\tsha1=$(git rev-parse :new) &&\n'> <'\t(\n'> <'\t\techo "100644 $sha1 1\told"\n'> 
          <'\t\techo "100644 $sha1 3\told"\n'> <'\t) | git update-index --index-info &&\n'> <'\t>old &&\n'> <'\tgit ls-files -s &&\n'> 
          <'\tgit reset --hard &&\n'> <'\tgit ls-files -s >actual &&\n'> <'\t! test -f old\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'Porcelain checkout -f should remove remnants too'>)} 
      {
        (SQ <'\n'> <'\tread_tree_u_must_succeed --reset -u HEAD &&\n'> 
          <'\tgit ls-files -s >expect &&\n'> <'\tsha1=$(git rev-parse :new) &&\n'> <'\t(\n'> <'\t\techo "100644 $sha1 1\told"\n'> 
          <'\t\techo "100644 $sha1 3\told"\n'> <'\t) | git update-index --index-info &&\n'> <'\t>old &&\n'> <'\tgit ls-files -s &&\n'> 
          <'\tgit checkout -f &&\n'> <'\tgit ls-files -s >actual &&\n'> <'\t! test -f old\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'Porcelain checkout -f HEAD should remove remnants too'>)} 
      {
        (SQ <'\n'> <'\tread_tree_u_must_succeed --reset -u HEAD &&\n'> 
          <'\tgit ls-files -s >expect &&\n'> <'\tsha1=$(git rev-parse :new) &&\n'> <'\t(\n'> <'\t\techo "100644 $sha1 1\told"\n'> 
          <'\t\techo "100644 $sha1 3\told"\n'> <'\t) | git update-index --index-info &&\n'> <'\t>old &&\n'> <'\tgit ls-files -s &&\n'> 
          <'\tgit checkout -f HEAD &&\n'> <'\tgit ls-files -s >actual &&\n'> <'\t! test -f old\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)