(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"Tests to check that \"reset\" options follow a known table">)}
          spids: [13]
        )
      ]
      spids: [13]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <"creating initial commits">)} 
      {
        (SQ <"\n"> <"    test_commit E file1 &&\n"> <"    test_commit D file1 &&\n"> 
          <"    test_commit C file1\n">
        )
      }
    )
    (While
      cond: [(C {(read)} {(W1)} {(I1)} {(H1)} {(T)} {(opt)} {(W2)} {(I2)} {(H2)})]
      body: 
        (DoGroup
          children: [
            (C {(test_expect_success)} 
              {
                (DQ ("check: ") ($ VSub_Name "$W1") (" ") ($ VSub_Name "$I1") (" ") ($ VSub_Name "$H1") 
                  (" ") ($ VSub_Name "$T") (" --") ($ VSub_Name "$opt") (" ") ($ VSub_Name "$W2") (" ") ($ VSub_Name "$I2") (" ") 
                  ($ VSub_Name "$H2")
                )
              } 
              {
                (SQ <"\n"> <"\tgit reset --hard C &&\n"> <"\tif test \"$I1\" != \"$H1\"\n"> <"\tthen\n"> 
                  <"\t    echo \"$I1\" >file1 &&\n"> <"\t    git add file1\n"> <"\tfi &&\n"> <"\tif test \"$W1\" != \"$I1\"\n"> <"\tthen\n"> 
                  <"\t    echo \"$W1\" >file1\n"> <"\tfi &&\n"> <"\tif test \"$W2\" != \"XXXXX\"\n"> <"\tthen\n"> <"\t    git reset --$opt $T &&\n"> 
                  <"\t    test \"$(cat file1)\" = \"$W2\" &&\n"> <"\t    git checkout-index -f -- file1 &&\n"> <"\t    test \"$(cat file1)\" = \"$I2\" &&\n"> 
                  <"\t    git checkout -f HEAD -- file1 &&\n"> <"\t    test \"$(cat file1)\" = \"$H2\"\n"> <"\telse\n"> <"\t    test_must_fail git reset --$opt $T\n"> 
                  <"\tfi\n"> <"    ">
                )
              }
            )
          ]
          spids: [59 109]
        )
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {("A B C D soft   A B D\n") ("A B C D mixed  A D D\n") ("A B C D hard   D D D\n") 
              ("A B C D merge  XXXXX\n") ("A B C D keep   XXXXX\n") ("A B C C soft   A B C\n") ("A B C C mixed  A C C\n") 
              ("A B C C hard   C C C\n") ("A B C C merge  XXXXX\n") ("A B C C keep   A C C\n") ("B B C D soft   B B D\n") 
              ("B B C D mixed  B D D\n") ("B B C D hard   D D D\n") ("B B C D merge  D D D\n") ("B B C D keep   XXXXX\n") 
              ("B B C C soft   B B C\n") ("B B C C mixed  B C C\n") ("B B C C hard   C C C\n") ("B B C C merge  C C C\n") 
              ("B B C C keep   B C C\n") ("B C C D soft   B C D\n") ("B C C D mixed  B D D\n") ("B C C D hard   D D D\n") 
              ("B C C D merge  XXXXX\n") ("B C C D keep   XXXXX\n") ("B C C C soft   B C C\n") ("B C C C mixed  B C C\n") 
              ("B C C C hard   C C C\n") ("B C C C merge  B C C\n") ("B C C C keep   B C C\n")
            }
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [111]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"setting up branches to test with unmerged entries">)} 
      {
        (SQ <"\n"> <"    git reset --hard C &&\n"> <"    git branch branch1 &&\n"> 
          <"    git branch branch2 &&\n"> <"    git checkout branch1 &&\n"> <"    test_commit B1 file1 &&\n"> <"    git checkout branch2 &&\n"> 
          <"    test_commit B file1\n">
        )
      }
    )
    (While
      cond: [(C {(read)} {(W1)} {(I1)} {(H1)} {(T)} {(opt)} {(W2)} {(I2)} {(H2)})]
      body: 
        (DoGroup
          children: [
            (C {(test_expect_success)} 
              {
                (DQ ("check: ") ($ VSub_Name "$W1") (" ") ($ VSub_Name "$I1") (" ") ($ VSub_Name "$H1") 
                  (" ") ($ VSub_Name "$T") (" --") ($ VSub_Name "$opt") (" ") ($ VSub_Name "$W2") (" ") ($ VSub_Name "$I2") (" ") 
                  ($ VSub_Name "$H2")
                )
              } 
              {
                (SQ <"\n"> <"\tgit reset --hard B &&\n"> <"\ttest_must_fail git merge branch1 &&\n"> 
                  <"\tcat file1 >X_file1 &&\n"> <"\tif test \"$W2\" != \"XXXXX\"\n"> <"\tthen\n"> <"\t    git reset --$opt $T &&\n"> 
                  <"\t    if test \"$W2\" = \"X\"\n"> <"\t    then\n"> <"\t\ttest_cmp file1 X_file1\n"> <"\t    else\n"> 
                  <"\t\ttest \"$(cat file1)\" = \"$W2\"\n"> <"\t    fi &&\n"> <"\t    git checkout-index -f -- file1 &&\n"> 
                  <"\t    test \"$(cat file1)\" = \"$I2\" &&\n"> <"\t    git checkout -f HEAD -- file1 &&\n"> <"\t    test \"$(cat file1)\" = \"$H2\"\n"> <"\telse\n"> 
                  <"\t    test_must_fail git reset --$opt $T\n"> <"\tfi\n"> <"    ">
                )
              }
            )
          ]
          spids: [154 202]
        )
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {("X U B C soft   XXXXX\n") ("X U B C mixed  X C C\n") ("X U B C hard   C C C\n") 
              ("X U B C merge  C C C\n") ("X U B C keep   XXXXX\n") ("X U B B soft   XXXXX\n") ("X U B B mixed  X B B\n") 
              ("X U B B hard   B B B\n") ("X U B B merge  B B B\n") ("X U B B keep   XXXXX\n")
            }
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [204]
        )
      ]
    )
    (C {(test_done)})
  ]
)