(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"prune $GIT_DIR/worktrees">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(initialize)} {(SQ <"\n"> <"\tgit commit --allow-empty -m init\n">)})
    (C {(test_expect_success)} {(SQ <"worktree prune on normal repo">)} 
      {(SQ <"\n"> <"\tgit worktree prune &&\n"> <"\ttest_must_fail git worktree prune abc\n">)}
    )
    (C {(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">
        )
      }
    )
    (C {(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">
        )
      }
    )
    (C {(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">
        )
      }
    )
    (C {(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">
        )
      }
    )
    (C {(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">
        )
      }
    )
    (C {(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">
        )
      }
    )
    (C {(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">
        )
      }
    )
    (C {(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">
        )
      }
    )
    (C {(test_done)})
  ]
)