(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'test_description='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'test_description='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'prune $GIT_DIR/worktrees'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<initialize>}
        {(SQ <'\n'> <'\tgit commit --allow-empty -m init\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'worktree prune on normal repo'>)}
        {(SQ <'\n'> <'\tgit worktree prune &&\n'> <'\ttest_must_fail git worktree prune abc\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'prune files inside $GIT_DIR/worktrees'>)}
        {
          (SQ <'\n'> <'\tmkdir .git/worktrees &&\n'> <'\t: >.git/worktrees/abc &&\n'> 
            <'\tgit worktree prune --verbose >actual &&\n'> <'\tcat >expect <<EOF &&\n'> <'Removing worktrees/abc: not a valid directory\n'> <'EOF\n'> 
            <'\ttest_i18ncmp expect actual &&\n'> <'\t! test -f .git/worktrees/abc &&\n'> <'\t! test -d .git/worktrees\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'prune directories without gitdir'>)}
        {
          (SQ <'\n'> <'\tmkdir -p .git/worktrees/def/abc &&\n'> <'\t: >.git/worktrees/def/def &&\n'> 
            <'\tcat >expect <<EOF &&\n'> <'Removing worktrees/def: gitdir file does not exist\n'> <'EOF\n'> 
            <'\tgit worktree prune --verbose >actual &&\n'> <'\ttest_i18ncmp expect actual &&\n'> <'\t! test -d .git/worktrees/def &&\n'> 
            <'\t! test -d .git/worktrees\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<SANITY>}
        {(SQ <'prune directories with unreadable gitdir'>)}
        {
          (SQ <'\n'> <'\tmkdir -p .git/worktrees/def/abc &&\n'> <'\t: >.git/worktrees/def/def &&\n'> 
            <'\t: >.git/worktrees/def/gitdir &&\n'> <'\tchmod u-r .git/worktrees/def/gitdir &&\n'> <'\tgit worktree prune --verbose >actual &&\n'> 
            <'\ttest_i18ngrep "Removing worktrees/def: unable to read gitdir file" actual &&\n'> <'\t! test -d .git/worktrees/def &&\n'> <'\t! test -d .git/worktrees\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'prune directories with invalid gitdir'>)}
        {
          (SQ <'\n'> <'\tmkdir -p .git/worktrees/def/abc &&\n'> <'\t: >.git/worktrees/def/def &&\n'> 
            <'\t: >.git/worktrees/def/gitdir &&\n'> <'\tgit worktree prune --verbose >actual &&\n'> 
            <'\ttest_i18ngrep "Removing worktrees/def: invalid gitdir file" actual &&\n'> <'\t! test -d .git/worktrees/def &&\n'> <'\t! test -d .git/worktrees\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'prune directories with gitdir pointing to nowhere'>)}
        {
          (SQ <'\n'> <'\tmkdir -p .git/worktrees/def/abc &&\n'> <'\t: >.git/worktrees/def/def &&\n'> 
            <'\techo "$(pwd)"/nowhere >.git/worktrees/def/gitdir &&\n'> <'\tgit worktree prune --verbose >actual &&\n'> 
            <
'\ttest_i18ngrep "Removing worktrees/def: gitdir file points to non-existent location" actual &&\n'
            > <'\t! test -d .git/worktrees/def &&\n'> <'\t! test -d .git/worktrees\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'not prune locked checkout'>)}
        {
          (SQ <'\n'> <'\ttest_when_finished rm -r .git/worktrees &&\n'> 
            <'\tmkdir -p .git/worktrees/ghi &&\n'> <'\t: >.git/worktrees/ghi/locked &&\n'> <'\tgit worktree prune &&\n'> 
            <'\ttest -d .git/worktrees/ghi\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'not prune recent checkouts'>)}
        {
          (SQ <'\n'> <'\ttest_when_finished rm -r .git/worktrees &&\n'> <'\tmkdir zz &&\n'> 
            <'\tmkdir -p .git/worktrees/jlm &&\n'> <'\techo "$(pwd)"/zz >.git/worktrees/jlm/gitdir &&\n'> <'\trmdir zz &&\n'> 
            <'\tgit worktree prune --verbose --expire=2.days.ago &&\n'> <'\ttest -d .git/worktrees/jlm\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'not prune proper checkouts'>)}
        {
          (SQ <'\n'> <'\ttest_when_finished rm -r .git/worktrees &&\n'> 
            <'\tgit worktree add --detach "$PWD/nop" master &&\n'> <'\tgit worktree prune &&\n'> <'\ttest -d .git/worktrees/nop\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)