(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'test git worktree move, remove, lock and unlock'>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (C {<test_expect_success>} {(SQ <setup>)} 
      {
        (SQ <'\n'> <'\ttest_commit init &&\n'> <'\tgit worktree add source &&\n'> 
          <'\tgit worktree list --porcelain | grep "^worktree" >actual &&\n'> <'\tcat <<-EOF >expected &&\n'> <'\tworktree $(pwd)\n'> <'\tworktree $(pwd)/source\n'> <'\tEOF\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'lock main worktree'>)} 
      {(SQ <'\n'> <'\ttest_must_fail git worktree lock .\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'lock linked worktree'>)} 
      {
        (SQ <'\n'> <'\tgit worktree lock --reason hahaha source &&\n'> <'\techo hahaha >expected &&\n'> 
          <'\ttest_cmp expected .git/worktrees/source/locked\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'lock linked worktree from another worktree'>)} 
      {
        (SQ <'\n'> <'\trm .git/worktrees/source/locked &&\n'> <'\tgit worktree add elsewhere &&\n'> 
          <'\tgit -C elsewhere worktree lock --reason hahaha ../source &&\n'> <'\techo hahaha >expected &&\n'> <'\ttest_cmp expected .git/worktrees/source/locked\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'lock worktree twice'>)} 
      {
        (SQ <'\n'> <'\ttest_must_fail git worktree lock source &&\n'> <'\techo hahaha >expected &&\n'> 
          <'\ttest_cmp expected .git/worktrees/source/locked\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'lock worktree twice (from the locked worktree)'>)} 
      {
        (SQ <'\n'> <'\ttest_must_fail git -C source worktree lock . &&\n'> 
          <'\techo hahaha >expected &&\n'> <'\ttest_cmp expected .git/worktrees/source/locked\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'unlock main worktree'>)} 
      {(SQ <'\n'> <'\ttest_must_fail git worktree unlock .\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'unlock linked worktree'>)} 
      {
        (SQ <'\n'> <'\tgit worktree unlock source &&\n'> 
          <'\ttest_path_is_missing .git/worktrees/source/locked\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'unlock worktree twice'>)} 
      {
        (SQ <'\n'> <'\ttest_must_fail git worktree unlock source &&\n'> 
          <'\ttest_path_is_missing .git/worktrees/source/locked\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)