(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"read-tree -u --reset">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ VSub_Name "$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)})
  ]
)