(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"git reset in a bare repository">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <"setup non-bare">)} 
      {
        (SQ <"\n"> <"\techo one >file &&\n"> <"\tgit add file &&\n"> <"\tgit commit -m one &&\n"> 
          <"\techo two >file &&\n"> <"\tgit commit -a -m two\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"\"hard\" reset requires a worktree">)} 
      {(SQ <"\n"> <"\t(cd .git &&\n"> <"\t test_must_fail git reset --hard)\n">)}
    )
    (C {(test_expect_success)} {(SQ <"\"merge\" reset requires a worktree">)} 
      {(SQ <"\n"> <"\t(cd .git &&\n"> <"\t test_must_fail git reset --merge)\n">)}
    )
    (C {(test_expect_success)} {(SQ <"\"keep\" reset requires a worktree">)} 
      {(SQ <"\n"> <"\t(cd .git &&\n"> <"\t test_must_fail git reset --keep)\n">)}
    )
    (C {(test_expect_success)} {(SQ <"\"mixed\" reset is ok">)} 
      {(SQ <"\n"> <"\t(cd .git && git reset)\n">)}
    )
    (C {(test_expect_success)} {(SQ <"\"soft\" reset is ok">)} 
      {(SQ <"\n"> <"\t(cd .git && git reset --soft)\n">)}
    )
    (C {(test_expect_success)} {(SQ <"hard reset works with GIT_WORK_TREE">)} 
      {
        (SQ <"\n"> <"\tmkdir worktree &&\n"> 
          <"\tGIT_WORK_TREE=$PWD/worktree GIT_DIR=$PWD/.git git reset --hard &&\n"> <"\ttest_cmp file worktree/file\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"setup bare">)} 
      {(SQ <"\n"> <"\tgit clone --bare . bare.git &&\n"> <"\tcd bare.git\n">)}
    )
    (C {(test_expect_success)} {(SQ <"\"hard\" reset is not allowed in bare">)} 
      {(SQ <"\n"> <"\ttest_must_fail git reset --hard HEAD^\n">)}
    )
    (C {(test_expect_success)} {(SQ <"\"merge\" reset is not allowed in bare">)} 
      {(SQ <"\n"> <"\ttest_must_fail git reset --merge HEAD^\n">)}
    )
    (C {(test_expect_success)} {(SQ <"\"keep\" reset is not allowed in bare">)} 
      {(SQ <"\n"> <"\ttest_must_fail git reset --keep HEAD^\n">)}
    )
    (C {(test_expect_success)} {(SQ <"\"mixed\" reset is not allowed in bare">)} 
      {(SQ <"\n"> <"\ttest_must_fail git reset --mixed HEAD^\n">)}
    )
    (C {(test_expect_success)} {(SQ <"\"soft\" reset is allowed in bare">)} 
      {
        (SQ <"\n"> <"\tgit reset --soft HEAD^ &&\n"> 
          <"\ttest \"$(git show --pretty=format:%s | head -n 1)\" = \"one\"\n">
        )
      }
    )
    (C {(test_done)})
  ]
)