(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'test git worktree list' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:18))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) (Token id:Id.Lit_Chars val:'\ttest_commit init\n' span_id:23) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rev-parse --git-common-dir on main worktree' span_id:30))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:34) (Token id: Id.Lit_Chars val: '\tgit rev-parse --git-common-dir >actual &&\n' span_id: 35 ) (Token id:Id.Lit_Chars val:'\techo .git >expected &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\tmkdir sub &&\n' span_id:38) (Token id: Id.Lit_Chars val: '\tgit -C sub rev-parse --git-common-dir >actual2 &&\n' span_id: 39 ) (Token id:Id.Lit_Chars val:'\techo sub/.git >expected2 &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\ttest_cmp expected2 actual2\n' span_id:41) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"list" all worktrees from main' span_id:48))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:52) (Token id: Id.Lit_Chars val: '\techo "$(git rev-parse --show-toplevel) $(git rev-parse --short HEAD) [$(git symbolic-ref --short HEAD)]" >expect &&\n' span_id: 53 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -rf here && git worktree prune" &&\n' span_id: 54 ) (Token id:Id.Lit_Chars val:'\tgit worktree add --detach here master &&\n' span_id:55) (Token id: Id.Lit_Chars val: '\techo "$(git -C here rev-parse --show-toplevel) $(git rev-parse --short HEAD) (detached HEAD)" >>expect &&\n' span_id: 56 ) (Token id:Id.Lit_Chars val:'\tgit worktree list | sed "s/ */ /g" >actual &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:58) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"list" all worktrees from linked' span_id:65))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:69) (Token id: Id.Lit_Chars val: '\techo "$(git rev-parse --show-toplevel) $(git rev-parse --short HEAD) [$(git symbolic-ref --short HEAD)]" >expect &&\n' span_id: 70 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -rf here && git worktree prune" &&\n' span_id: 71 ) (Token id:Id.Lit_Chars val:'\tgit worktree add --detach here master &&\n' span_id:72) (Token id: Id.Lit_Chars val: '\techo "$(git -C here rev-parse --show-toplevel) $(git rev-parse --short HEAD) (detached HEAD)" >>expect &&\n' span_id: 73 ) (Token id:Id.Lit_Chars val:'\tgit -C here worktree list | sed "s/ */ /g" >actual &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:75) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"list" all worktrees --porcelain' span_id:82))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:86) (Token id: Id.Lit_Chars val: '\techo "worktree $(git rev-parse --show-toplevel)" >expect &&\n' span_id: 87 ) (Token id:Id.Lit_Chars val:'\techo "HEAD $(git rev-parse HEAD)" >>expect &&\n' span_id:88) (Token id: Id.Lit_Chars val: '\techo "branch $(git symbolic-ref HEAD)" >>expect &&\n' span_id: 89 ) (Token id:Id.Lit_Chars val:'\techo >>expect &&\n' span_id:90) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -rf here && git worktree prune" &&\n' span_id: 91 ) (Token id:Id.Lit_Chars val:'\tgit worktree add --detach here master &&\n' span_id:92) (Token id: Id.Lit_Chars val: '\techo "worktree $(git -C here rev-parse --show-toplevel)" >>expect &&\n' span_id: 93 ) (Token id:Id.Lit_Chars val:'\techo "HEAD $(git rev-parse HEAD)" >>expect &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\techo "detached" >>expect &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\techo >>expect &&\n' span_id:96) (Token id: Id.Lit_Chars val: '\tgit worktree list --porcelain >actual &&\n' span_id: 97 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:98) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'bare repo setup' span_id:105))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:109) (Token id:Id.Lit_Chars val:'\tgit init --bare bare1 &&\n' span_id:110) (Token id:Id.Lit_Chars val:'\techo "data" >file1 &&\n' span_id:111) (Token id:Id.Lit_Chars val:'\tgit add file1 &&\n' span_id:112) (Token id:Id.Lit_Chars val:'\tgit commit -m"File1: add data" &&\n' span_id:113) (Token id:Id.Lit_Chars val:'\tgit push bare1 master &&\n' span_id:114) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^\n' span_id:115) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"list" all worktrees from bare main' span_id:122))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:126) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -rf there && git -C bare1 worktree prune" &&\n' span_id: 127 ) (Token id:Id.Lit_Chars val:'\tgit -C bare1 worktree add --detach ../there master &&\n' span_id:128) (Token id: Id.Lit_Chars val: '\techo "$(pwd)/bare1 (bare)" >expect &&\n' span_id: 129 ) (Token id: Id.Lit_Chars val: '\techo "$(git -C there rev-parse --show-toplevel) $(git -C there rev-parse --short HEAD) (detached HEAD)" >>expect &&\n' span_id: 130 ) (Token id:Id.Lit_Chars val:'\tgit -C bare1 worktree list | sed "s/ */ /g" >actual &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:132) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"list" all worktrees --porcelain from bare main' span_id:139))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:143) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -rf there && git -C bare1 worktree prune" &&\n' span_id: 144 ) (Token id:Id.Lit_Chars val:'\tgit -C bare1 worktree add --detach ../there master &&\n' span_id:145) (Token id: Id.Lit_Chars val: '\techo "worktree $(pwd)/bare1" >expect &&\n' span_id: 146 ) (Token id:Id.Lit_Chars val:'\techo "bare" >>expect &&\n' span_id:147) (Token id:Id.Lit_Chars val:'\techo >>expect &&\n' span_id:148) (Token id: Id.Lit_Chars val: '\techo "worktree $(git -C there rev-parse --show-toplevel)" >>expect &&\n' span_id: 149 ) (Token id:Id.Lit_Chars val:'\techo "HEAD $(git -C there rev-parse HEAD)" >>expect &&\n' span_id:150) (Token id:Id.Lit_Chars val:'\techo "detached" >>expect &&\n' span_id:151) (Token id:Id.Lit_Chars val:'\techo >>expect &&\n' span_id:152) (Token id: Id.Lit_Chars val: '\tgit -C bare1 worktree list --porcelain >actual &&\n' span_id: 153 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:154) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"list" all worktrees from linked with a bare main' span_id: 161 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:165) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -rf there && git -C bare1 worktree prune" &&\n' span_id: 166 ) (Token id:Id.Lit_Chars val:'\tgit -C bare1 worktree add --detach ../there master &&\n' span_id:167) (Token id: Id.Lit_Chars val: '\techo "$(pwd)/bare1 (bare)" >expect &&\n' span_id: 168 ) (Token id: Id.Lit_Chars val: '\techo "$(git -C there rev-parse --show-toplevel) $(git -C there rev-parse --short HEAD) (detached HEAD)" >>expect &&\n' span_id: 169 ) (Token id:Id.Lit_Chars val:'\tgit -C there worktree list | sed "s/ */ /g" >actual &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:171) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'bare repo cleanup' span_id:178))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:182) (Token id:Id.Lit_Chars val:'\trm -rf bare1\n' span_id:183) ) } ) (C {(test_done)}) ] )