(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)})
  ]
)